Google apps script 谷歌表单文件上传:获取文件名

Google apps script 谷歌表单文件上传:获取文件名,google-apps-script,file-upload,google-drive-api,google-forms,Google Apps Script,File Upload,Google Drive Api,Google Forms,其他用户也提出了类似的问题和建议。我试图复制答案,但收到的答案未定义。我的用户最多可以上传5个文件,我想在电子表格的5列中添加文件名作为响应 我假设,使用下面的示例,一旦我有了URL,我就能够获得文件名 function driveFile(){ //e.values[1] is apparently the file URL var url = "https://drive.google.com/open?id=1bVbNAnES33oY4gx8npdp51ZSMekQalk" var id

其他用户也提出了类似的问题和建议。我试图复制答案,但收到的答案未定义。我的用户最多可以上传5个文件,我想在电子表格的5列中添加文件名作为响应

我假设,使用下面的示例,一旦我有了URL,我就能够获得文件名

function driveFile(){
//e.values[1] is apparently the file URL 
var url = "https://drive.google.com/open?id=1bVbNAnES33oY4gx8npdp51ZSMekQalk"
var id = url.split("=")[1];
var file = DriveApp.getFileById(id);
var fileName = file.getName();
}
我按照另一个问题中的建议尝试了这个方法,但结果没有定义。 我还尝试使用0,因为它可以将不同文件的URL设置为0到4

 var file = e.values[1]
我也试过另一个问题的例子,但没有用。我也不确定它是否会返回连接的URL或数组中的URL

var fileBlob = e.parameter.thefile;
如果您能在这方面提供指导,我将不胜感激。获取URL→ 通过谷歌表单提交的(最多)5个文件的文件名。

回答: 这可以使用附加到Google表单的
onSubmit()
触发器来完成

进一步资料: 您遇到的问题是,
values
不是表单提交时获得的事件对象的参数-这就是您获得未定义返回的原因

表单响应比这稍微复杂一些-它们是具有预定义方法的对象,为了从中获取信息,您需要使用表单的应用程序脚本文档中提供的方法

代码:
提交函数(e){
//假设要求上传文件的问题是问题1
//将此更改为正确的问题编号:
var uploadQuestionNumber=1;
var formResponses=e.response.getItemResponses();
变量名称=[];
var fileUploads=formResponses[uploadQuestionNumber-1];
对于(i=0;i
变量
name
将返回上载文件的所有文件名的数组。然后,您可以使用
SpreadsheetApp
将其放入表格中

参考资料:

何时以及如何运行
driveFile()
?要获取表单提交的上下文,您需要在触发器上运行函数,并且您的函数也没有事件参数。我在我的驱动器中用一个有效的文件URL测试了你的第一个函数,它运行得很好。亲爱的Rafa,我没有运行driveFile()。我正在尝试首先检索文件URL,很抱歉我的问题布局混乱。您是如何获取URL的?我运行了
var='url'https://drive.google.com/open?id='; var id=url.split('=')[1];Logger.log(DriveApp.getFileById(id.getName())并且能够毫无问题地记录文件名。您是否正在尝试获取表单提交时的文件名?亲爱的Rafa,是的,我正在尝试获取提交期间上载的所有文件的URL。