Google apps script 获取异常:使用getFileById时出现无效ID错误

Google apps script 获取异常:使用getFileById时出现无效ID错误,google-apps-script,google-sheets,Google Apps Script,Google Sheets,我正在尝试使用一个在线教程中的脚本,该脚本将把URL放在google表单响应表中,这样我就可以在提交响应后返回并编辑它们 剧本是这个人写的 他的指示如下: 以下是教程中的脚本: function assignEditUrls() { var form = FormApp.openById('Your form ke goes here'); var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Your re

我正在尝试使用一个在线教程中的脚本,该脚本将把URL放在google表单响应表中,这样我就可以在提交响应后返回并编辑它们

剧本是这个人写的 他的指示如下:

以下是教程中的脚本:

function assignEditUrls() {
  var form = FormApp.openById('Your form ke goes here');

  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Your responses Google Sheet name goes here - The tab name, not the file name');

  var data = sheet.getDataRange().getValues();
  var urlCol = Column number where URLs get entered goes here; 
  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);  
}
(其中….是更多的文档密钥。出于安全原因,我不会将全部内容放在文档中)

根据本教程和所有其他相关研究,这一部分似乎是URL中要使用的正确部分

1pKmad.....VtT3GaM
但这就是导致错误的原因。 我尝试了整个URL,URL只到doc键部分,还有其他一些子集,但都不起作用


有人知道我做错了什么吗?

问题:

根据您的描述,您正试图通过
id
访问电子表格文件,但您使用的是
FormApp

您应该改用
SpreadsheetApp

var form=SpreadsheetApp.openById('1pKmad…..VtT3GaM');//表单现在是电子表格对象

但现在的新问题是,变量不再是
form
,而是
电子表格
对象,因此在调用
form.getResponses()
时会出现其他错误

解决方案:

您需要使用现有脚本,将表单的
id
而不是电子表格的
id,电子表格可以在
表单的
url上找到:

var form=FormApp.openById(“此处的表单ID不是电子表格ID”)

注意:

表单
url
如下所示:

https://docs.google.com/forms/d/formID/edit

您可以通过电子表格文件菜单找到附加到电子表格文件的表格:


啊哈,事情并不像看上去那么复杂。我必须使用表单中的ID,而不是登录电子表格。还需要在编辑模式下使用表单,而不是公共表单的ID。我根本不需要从FormApp更改为SpreadsheetApp就可以实现这一目标work@Mastercore如果通过点击答案左边的嘀嗒按钮来解决问题,请考虑接受答案。
1pKmad.....VtT3GaM