1 回答
TA贡献1783条经验 获得超4个赞
我相信你的目标如下。
您想针对使用 Google 表单上传一个文件和/或多个文件的情况修改您的脚本。
修改点:
根据您的脚本,我认为您的脚本可能是 Google Form 的容器绑定脚本。从 中More than one file is uploaded
,我认为uploads
ofvar uploads = responses[4].getResponse()
是一个包含上传文件的文件 ID 的数组。在这种情况下,responses[4]
每种情况如下。
当文件未上传时,
responses[4]
是undefined
.这在你的问题中已经提到了。
当一个文件和/或多个文件上传时,
responses[4]
是ItemResponse的对象,responses[4].getResponse()
是一个包含上传文件的文件ID的数组。上传一个文件时,
var uploads = responses[4].getResponse()
就像["###fileId###"]
. 在这种情况下,DriveApp.getFileById(uploads)
有效。我认为这uploads.toString()
可能用于这种情况。但是,当上传多个文件时,文件 ID 不存在。由此,错误发生。关于 中的问题
More than one file is uploaded
,我认为这是您问题的原因。
我认为为了实现你的目标,可以使用上述情况。当你的脚本修改后,就变成了下面这样。
修改脚本:
从:
var uploads = responses[4].getResponse();
到:
var uploads = "";
if (responses[4]) { // or if(uploads !== undefined) if(typeof uploads !== "undefined")
uploads = responses[4].getResponse().map(id => DriveApp.getFileById(id).getUrl()).join(",");
}
笔记:
在这个修改中,当一个文件被上传时,uploads就是一个URL。例如,当上传 2 个文件时,uploads是一个包含 2 个 URL 的字符串值,例如URL1,URL2. 如果想作为数组使用,请修改为uploads = responses[4].getResponse().map(id => DriveApp.getFileById(id).getUrl()).
当没有文件上传时,uploads是"".
添加回答
举报