在谷歌脚本中使用上传字段时,我遇到了两个问题。我会尽力描述我的问题。
我有一个表单,在发送时设置了触发器。此触发器调用一个主函数,而主函数又调用其他一些函数。
其中一个子功能创建一个文档,然后在特定工作表上设置其链接。
主函数在以下行中获取项目响应对象:
var responses = e.response.getItemResponses();
然后,此对象作为参数传递给 Doc 函数:
generateBriefingPDF(classID, briefingSheet, responses, timestamp);
ClassID 是一个简单的整数属性,briefingSheet 是我从中获取的目标工作表和时间戳:
var timestamp = e.response.getTimestamp();
在 generateBriefingPDF 脚本中,我得到响应并将它们分配给更易于阅读的变量,如下所示:
var name = responses[0].getResponse();
var subject = responses[1].getResponse();
var content = responses[2].getResponse();
var level = responses[3].getResponse();
var uploads = responses[4].getResponse();
然后,我在用带有变量的模板复制的新文档中替换文本“变量” 。
我也将它们设置在工作表中。
“上传”var 是文件的 ID,因此我使用以下方法将其转换为链接:
uploads = DriveApp.getFileById(uploads).getUrl();
这很好用。除了 response[4] 中的“uploads”变量外,它是一个上传字段。发生以下情况:
当什么都没有上传时:变量是undefined,所以它不能运行属性“getResponse”。TypeError: Cannot read property 'getResponse' of undefined我在 Stackdriver 日志中收到错误。我试图用以下几行检查是否未定义,但都没有用:
if(uploads !== undefined) if(typeof uploads !== "undefined")
上传一个文件:一切正常。
上传了多个文件:我在尝试通过 ID 获取文件时出错(当然):Exception: Unexpected error while getting the method or property getFileById on object DriveApp. 当我没有将 ID 转换为链接的行时,ID 在doc 文件,但只有第一个出现在工作表中。
我能做些什么来解决这两个问题?
慕娘9325324
相关分类