首页 > 解决方案 > 在提交 Google 表单时找不到具有给定 ID 的项目

问题描述

我创建了一个在 Google 表单上运行 onSubmit 的脚本。它应该获取上传到表单的图像的 ID,将图像作为 Blob 获取,然后将其转发到某个电子邮件地址。问题是,有时(大约十分之一),脚本会出现以下错误:

例外:找不到具有给定 ID 的项目,或者您无权访问它。在 on_Submit(代码:6:24)

我认为这与谷歌将文件上传/移动到云端硬盘所需的时间有关,所以我设置了一个超时来给它一些时间。错误仍然出现,频率稍低一些。有谁知道这可能出错的地方?

编码:

function on_Submit(e) {
  Utilities.sleep(30 * 1000)
  var res  = e.response
  var image_id = res.getItemResponses()[0].getResponse()

  var image = DriveApp.getFileById(image_id).getBlob()}

on_Submit(e) 函数链接到手动触发器以启用 DriveApp。谢谢

标签: google-apps-scriptgoogle-forms

解决方案


一些响应结果是有多个文件上传。对这个问题的回答是一组 ID。这是正确的代码:

Utilities.sleep(30 * 1000)
  var res  = e.response
  var image_id = res.getItemResponses()[0].getResponse()
  console.log(image_id)
  if(Array.isArray(image_id)){
    var images = [];
    for(var i in image_id){
      var id = image_id[i]
      var image = DriveApp.getFileById(id).getBlob()
      images.push(image)
    }
    console.log(images)
    GmailApp.sendEmail(SOME_EMAIL, SUBJECT, BODY, {attachments: images})
  }
  else{
    var image = DriveApp.getFileById(image_id).getBlob()
    GmailApp.sendEmail(SOME_EMAIL, SUBJECT, BODY, {attachments: [image]})
  }

推荐阅读