范围的坐标或尺寸无效

时间:2014-11-28 16:34:20

标签: google-apps-script

无论我做什么,我都会在标题中看到错误。如果我用标准

替换我的脚本
function doGet(e) {
  var params = JSON.stringify(e);
  return HtmlService.createHtmlOutput(params);
}
来自Googles的

非常自己的例子:https://developers.google.com/apps-script/guides/web#url_parameters我必须运行一次(在脚本编辑内部)以不再显示错误,但是当我将我的代码放回原位时它会保持在输出中虚函数。可能是因为我没有错误地运行我自己的功能(见下文)。

网络应用部署的设置:

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

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

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, "");
}

我很感激为什么会发生这种情况或者如何使用测试输入来运行我的功能。

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:1)

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

  1. 创建一个空函数,为您需要运行的函数生成所需的输入,然后调用每个函数。如果他们互相打电话,你只需要打电话给“父母”功能。
  2. 在File-> Manage versions。
  3. 下创建一个新版本
  4. 再次部署您的应用。在此过程中选择新版本。
  5. 我不确定2 + 3是否真的有必要,但对我来说它仍然运行旧的虚拟代码(打印回json)而不这样做。