google-apps-script - 如何将多个文件上传保存在特定文件夹中?
问题描述
我在 Google 表单上创建了一个自定义表单,其中包含一个上传文件问题(允许多个文件)。我正在尝试在提交表单时运行一个脚本,该表单在云端硬盘中的特定目标中创建一个文件夹,并保存上传到该文件夹中的文件。但我不知道如何检索上传文件的 ID 并将它们移动到新文件夹中。谢谢
我设法创建了新文件夹,但我无法选择上传的文件并将它们保存(或移动)到目标文件夹。我没有发布创建文件夹代码。
function onFormSubmit(e) {
var form = FormApp.getActiveForm();
var formResponses = form.getResponses();
var formResponse = formResponses[formResponses.length-1];
var itemResponses = formResponse.getItemResponses();
var itemResponse = itemResponses[1];
var uploadedfile = itemResponse.getResponse();
//now??
}
我想获取文件的 ID,但使用 .getItem().getID() 方法我得到类似 1.148501776E9 的东西 另外如何循环浏览上传的文件?
解决方案
- 当文件通过谷歌表单上传时,您希望将上传的文件移动到特定文件夹。
- 您已经为
onFormSubmit()
. - 您已经拥有目标文件夹的文件夹 ID。
如果我的理解是正确的,那么这个修改呢?请认为这只是几个答案之一。
修改点:
.getItem().getId()
是项目的唯一标识符。getResponse()
ofitemResponses
具有上传文件的文件 ID。你可以使用这个。
修改后的脚本:
在使用此脚本之前,请将目标文件夹 ID 设置为var folderId = "###"
.
当您修改脚本时,请删除一次 OnSubmit 事件触发器并重新安装触发器。那时,如果显示授权屏幕。请授权。这样,脚本就可以工作了。请注意这一点。
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);
}
}
}
}
笔记:
- 在我的测试案例中,当
Utilities.sleep(3000)
不使用时,由于在文件上传未完成之前尝试移动文件而发生错误。所以我把它。如果在您的环境中,没有它不会发生错误,请删除它。
参考:
如果我误解了您的问题并且这不是您想要的结果,我深表歉意。
推荐阅读
- javascript - 使用角度向现有类添加样式
- r - 两个大小不等的数据框之间的距离
- postgresql - spark将字符串转换为TimestampType
- symfony - form_errors 不显示任何内容
- c# - 如果值在 a 和 b 之间,则更改 DataGridTextColumn 的背景
- powershell - 在 Azure 自动化中编译包含 Get-NetAdapter 的 DSC Config
- selenium - Selenium Webdriver - 如何找到几秒钟后消失的“内联警告消息”的css/xpath?
- android - com.google.firebase.auth.FirebaseAuthException:此应用无权使用 Firebase 身份验证。
- php - 管理员登录 PHP 时添加链接
- javascript - 根据另一个表单的数据添加新表单?