【问题标题】:Google form file uploads: getting filenamesGoogle 表单文件上传:获取文件名
【发布时间】:2020-04-09 14:46:19
【问题描述】:

其他用户发布了类似的问题herehere。我试图复制答案,但收到未定义的答案。我的用户最多可以上传 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。

var fileBlob = e.parameter.thefile;

我将不胜感激有关此主题的任何指导。获取通过 G​​oogle 表单提交的(最多)5 个文件的 URL → 文件名。

【问题讨论】:

  • 您何时以及如何运行driveFile()?要获取表单提交的上下文,您需要在触发器上运行该函数,并且您的函数也没有 event 参数。我在我的云端硬盘中使用有效的文件 URL 测试了您的第一个函数,它按预期完美运行。
  • 亲爱的 Rafa,我没有运行 driveFile()。我正在尝试首先检索文件 URL,对于我的问题令人困惑的布局感到抱歉。
  • 您是如何获取这些 URL 的?我运行var url = 'https://drive.google.com/open?id=<example-file-id>'; var id = url.split('=')[1]; Logger.log(DriveApp.getFileById(id).getName()); 并且能够毫无问题地记录文件名。您是否尝试在提交表单时获取文件名?
  • 亲爱的 Rafa,是的,我正在尝试获取提交期间上传的所有文件的 URL。

标签: google-apps-script file-upload google-drive-api google-forms


【解决方案1】:

答案:

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

更多信息:

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

表单响应比这有点复杂 - 它们是具有预定义方法的对象,为了从中获取信息,您需要使用 Apps Script Documentation for Forms 中提供的方法.

代码:

function onSubmit(e) {
  // Assumiung the question which asks for the file upload is question 1
  // Change this to the correct question number:
  var uploadQuestionNumber = 1;

  var formResponses = e.response.getItemResponses();
  var names = [];
  var fileUploads = formResponses[uploadQuestionNumber - 1];
  for (i = 0; i < fileuploads.getResponse().length; i++) {
    name.push(DriveApp.getFileById(fileUploads.getResponse()[i]));
  }

  return name;
}

变量name 将返回上传文件的所有文件名的数组。然后,您可以使用 SpreadsheetApp 将其放入工作表中。

参考资料:

【讨论】:

    猜你喜欢
    • 2020-02-14
    • 2017-11-10
    • 2018-03-07
    • 1970-01-01
    • 2013-08-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多