【问题标题】:Upload google form files to two different google drive folders将谷歌表单文件上传到两个不同的谷歌驱动器文件夹
【发布时间】:2021-11-19 20:29:35
【问题描述】:

我有一个包含两个文件上传部分的谷歌表单。我希望能够将这些文件上传到两个不同的文件夹。第一个文件上传部分的文件应该放在文件夹一,第二个文件上传部分的文件应该放在文件夹二。我还想根据发件人的姓名自动命名文件夹。文件夹应如下所示:sendername_1、sendername_2 等,如果发件人具有相同的名称。我将如何做到这一点?我找到了下面的脚本,但它似乎只适用于文件夹 1。文件夹 2 包含来自第二个文件上传部分的文件,但它不会自动为它们创建文件夹。

    function onFormSubmit(e) {
  

    const folderId = "1y40PNXYXSm7Ue_b6nbVnauz7dzKiKj4u";  // Please set top folder ID of the destination folders.

  const form = FormApp.getActiveForm();
  const formResponses = form.getResponses();
  const itemResponses = formResponses[formResponses.length-1].getItemResponses();

  Utilities.sleep(3000); // This line might not be required.

  // Prepare the folder.
  const destFolder = DriveApp.getFolderById(folderId);
  const folderName = itemResponses[0].getResponse();
  const subFolder = destFolder.getFoldersByName(folderName);
  const folder = subFolder.hasNext() ? subFolder : destFolder.createFolder(folderName);

  // Move files to the folder.
itemResponses[2].getResponse().forEach(id => DriveApp.getFileById(id).moveTo(folder));

}

【问题讨论】:

  • 你有什么问题?
  • 我会让这个脚本工作以实现上述目标
  • 那太宽泛了。专注于脚本中更独特的问题。不是来给你写免费代码的。

标签: javascript google-apps-script google-forms


【解决方案1】:

以下是我将如何处理它的示例:

function getIdFromUrl(url) 
{ 
  return url.match(/[-\w]{25,}/); 
}

function automateFile (e) {

var name = e.values[2]
var file1 = e.values[3]; 
var file2 = e.values[4];
var drive = DriveApp;
var parentFolder = drive.getFolderById("1vJcsklbZ_Lk0b3CH0JxUHN8UzNI0eKXV"); //Set Parent Folder ID
var createFolder1 = drive.createFolder(name + '_1').moveTo(parentFolder);
var createFolder2 = drive.createFolder(name + '_2').moveTo(parentFolder);

var getfileId1 = getIdFromUrl(file1); //Gets the file ID 1
  drive.getFileById(getfileId1).moveTo(createFolder1); // Moves the file to Folder1 

var getfileId2 = getIdFromUrl(file2); //Gets the file ID 2
  drive.getFileById(getfileId2).moveTo(createFolder2); // Moves the file to Folder2 

}

注意事项: 该脚本是在 Google Sheets Apps Script 上完成的,该脚本是为 Google Forms 上的表单响应创建的工作表。

确保您像这样创建trigger

我从这个reference中使用了这个函数getIdFromUrl(url),因为file1file2只返回整个URL,而不是文件ID,目前还没有getFileById方法来移动上传的文件表单中的文件。

我的 Google 表单的屏幕截图:

内部驱动器:

文件在创建的文件夹内移动:

【讨论】:

  • 哇,谢谢。效果很好!
  • 没问题!如果这个答案有帮助,如果您单击左侧的接受按钮(复选图标),我将不胜感激,以便社区中可能与您有同样问题的其他人知道他们的问题可以得到解决。如果您无法使用接受按钮,请随时告诉我。 how to accept answer
  • 只是一个简单的问题。这些文件夹每个只能包含一个文件吗?
猜你喜欢
  • 2020-12-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-13
  • 2019-08-04
  • 1970-01-01
相关资源
最近更新 更多