范围的坐标或尺寸无效



无论我做什么,我都会在标题中得到错误。如果我用标准替换我的脚本

function doGet(e) {
  var params = JSON.stringify(e);
  return HtmlService.createHtmlOutput(params);
}

来自谷歌自己的例子:https://developers.google.com/apps-script/guides/web#url_parameters 我必须运行它一次(在脚本编辑中)才能不再显示错误,但是当我将代码放回原位时,它会停留在该虚拟函数的输出上。可能是因为我无法在没有错误的情况下运行自己的函数(见下文)。

Web 应用部署的设置:

  • 版本: 1
  • 执行身份:我
  • 访问:任何人,甚至是匿名的

我认为这与必须运行一次函数有关(或者至少对我来说是这样),但我无法运行我的函数,因为它依赖于 url 参数。这显然在 e.parameter == 未定义时已经失败了。

function doGet(e) {
  Logger.log(JSON.stringify(e));
  var result = 'Ok';
  if(e.parameter == undefined) {
    result = 'no param';
  }
  else {
    var id = 'id is normally here obviously not now';
    var sheet = SpreadsheetApp.openById(id).getActiveSheet();
    var newRow = sheet.getLastRow()+1;
    var rowData = [];
    for (var param in e.parameter) {
      var value = stripQuotes(e.parameter[param]);
      Logger.log(param + ': ' + e.parameter[param]);
      switch (param) {
        case 'timeStampBegin': //Parameter
          rowData[0] = value; //Value in column B
          break;
        case 'timeStampEnd':
          rowData[1] = value;
          break;
        default:
          result = 'unsupported parameter';
      }
    }
    Logger.log(JSON.stringify(rowData));
    var newRange = sheet.getRange(newRow, 1, 1, rowData.length);
    newRange.setValues([rowData]);
  }
  return ContentService.createTextOutput(result);
}
function stripQuotes( value ) {
  return value.replace(/^["']|['"]$/g, "");
}

我很感激任何建议,为什么会发生这种情况,或者我如何使用测试输入运行我的函数。

在添加任何新服务(例如.HTML服务、电子表格服务等)后,确实需要在 IDE 中运行一次脚本,以便从安全角度批准这些更改。

要在不制作大量新版本并部署每个版本的情况下测试您的代码(即步骤 2-3),您可以在 Web IDE 中运行它,或者导航到"发布">"部署为 Web 应用程序...",然后单击"测试 Web 应用程序以获取最新代码"。与实时版本不同,该链接使用当前保存的任何代码,而不是上次部署的版本。

我不知道

这是谷歌故意的,但这有点荒谬。显然,一个函数必须在编辑器中运行一次才能使用。但无论如何,它在这里:

  1. 创建一个空函数,为需要运行的函数生成所需的输入,并调用每个函数。如果它们互相调用,你只需要调用"parent"函数。
  2. 在"文件>管理版本"下创建新版本。
  3. 再次部署应用。在此过程中选择新版本。

我不确定 2+3 是否真的有必要,但对我来说,它仍然运行旧的虚拟代码(打印回 json)而不这样做。

最新更新