Google表单:如何将所有上传的文件移至提交时的特定文件夹?

问题描述 投票:0回答:1

首先,我为我在这里的知识不足而道歉-毫无疑问,这对于了解这一点的人来说非常简单-

我正在尝试将提交的每种表单的所有文件上传到一个文件夹中。

我有在这里找到的这段代码:Google Form: How to save multiple file upload in a specific folder?

function onFormSubmit(e) {
  var form = FormApp.getActiveForm();
  var formResponses = form.getResponses();
  var formResponse = formResponses[formResponses.length-1];
  var itemResponses = formResponse.getItemResponses();

  // I modified below script.
  Utilities.sleep(3000);

  var folderId = "###";  // Please set folder ID of the destination folder.

  var destfolder = DriveApp.getFolderById(folderId);
  for (var i = 0; i < itemResponses.length; i++) {
    if (itemResponses[i].getItem().getType() == "FILE_UPLOAD") {
      var ids = itemResponses[i].getResponse();
      for (var j = 0; j < ids.length; j++) {
        var file = DriveApp.getFileById(ids[j]);
        destfolder.addFile(file);
        file.getParents().next().removeFile(file);
      }
    }
  }
}

在提交时,出现此错误“找不到具有给定ID的项目,或者您没有访问权限。(第12行,文件“代码”)”]

第12行是这个:

  var destfolder = DriveApp.getFolderById(folderId);

两个问题:-这里出了什么问题,我该如何解决?

  • 我应该在目标文件夹ID中放置什么?我想使用与Form Publisher相同的方法,根据提交的表单中的详细信息,按如下方式限制输出PDF:<>-<>-<>
google-apps-script google-form
1个回答
0
投票

这是我处理图像文件的方法:

function uploadTheForm(theForm) {
  var rObj={};
  rObj['vendor']=theForm.vendor;
  rObj['amount']=theForm.amount;
  rObj['date']=theForm.date;
  rObj['notes']=theForm.notes
  var fileBlob=theForm.receipt;
  var fldr = DriveApp.getFolderById(receiptImageFolderId);
  rObj['file']=fldr.createFile(fileBlob);
  rObj['filetype']=fileBlob.getContentType(); 
  Logger.log(JSON.stringify(rObj));
  var cObj=formatFileName(rObj);
  Logger.log(JSON.stringify(cObj));
  var ss=SpreadsheetApp.openById(SSID);
  ss.getSheetByName('Receipt Information').appendRow([cObj.date,cObj.vendor,cObj.amount,cObj.notes,cObj.file.getUrl()]);
  var html=Utilities.formatString('<br />FileName: %s',cObj.file.getName());
  return html;
}
© www.soinside.com 2019 - 2024. All rights reserved.