【问题标题】:TypeError in Google Form scriptGoogle 表单脚本中的 TypeError
【发布时间】:2014-10-23 05:21:04
【问题描述】:

在 Google 表单脚本编辑器中,我使用以下代码在包含表单数据的电子表格中插入编辑响应链接。

    function assignEditUrls() {
  var form = FormApp.openById('1bAXKuBKQny9CLU3WOK4xxxxxxxxxxxxxxxxxxxxxxxxxxxx');
    //enter form ID here

  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Form Responses');

    //Change the sheet name as appropriate
  var data = sheet.getDataRange().getValues();
  var urlCol = 7; // column number where URL's should be populated; A = 1, B = 2 etc
  var responses = form.getResponses();
  var timestamps = [], urls = [], resultUrls = [];

  for (var i = 0; i < responses.length; i++) {
    timestamps.push(responses[i].getTimestamp().setMilliseconds(0));
    urls.push(responses[i].getEditResponseUrl());
  }
  for (var j = 1; j < data.length; j++) {

    resultUrls.push([data[j][0]?urls[timestamps.indexOf(data[j][0].setMilliseconds(0))]:'']);
  }
  sheet.getRange(2, urlCol, resultUrls.length).setValues(resultUrls);  
}

但是当我运行这个脚本时,它会显示这样的错误

TypeError: Cannot call method "getSheetByName" of null. (line 5, file "Code")Dismiss

如何解决这个问题?

【问题讨论】:

标签: google-apps-script google-sheets google-forms


【解决方案1】:

此脚本按 ID 打开一个表单,并希望响应表位于包含该脚本的电子表格中。因此您有两种选择:

  • 在收集响应的 Google 电子表格的脚本编辑器中添加代码,而不是在表单编辑器中。

  • 或者,open the Spreadsheet by ID

      var sheet = SpreadsheetApp.openByID(###SHEET-ID###)
                                .getSheetByName('Form Responses');
    

    或者更好,正如 Serge 建议的那样:

      var sheet = SpreadsheetApp.openByID(form.getDestinationId())
                                .getSheetByName('Form Responses');
    

说明:错误消息表明您尝试方法 getSheetByName() 的对象是 null 对象。该对象是从SpreadsheetApp.getActiveSpreadsheet() 获得的。该方法仅适用于电子表格绑定的脚本。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2023-03-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多