这是我第一次编写Google Script。我从未编写过JavaScript,但我确实有Java和Python方面的经验。我对此脚本的目标是,一旦提交了表单,我希望脚本创建一个使用多项选择问题的答案之一命名的文件夹。该文件夹应放在与Form所在的目录相同的目录中。到目前为止,我的Google脚本包含以下内容:
function createFolder(e) {
var existingForm = FormApp.getActiveForm();
if(e){
var response = e.response;
var items = response.getItemResponses();
DriveApp.createFolder(items[1].getResponse());
}
}
function createSubmitTrigger(){
var existingForm = FormApp.getActiveForm();
ScriptApp.newTrigger('createFolder').forForm(existingForm).onFormSubmit().create();
}
这是我已经创建的Form的有界脚本。我在脚本编辑器中运行了我的脚本,没有收到任何错误。我还自己向表单提交了一个响应,但是没有创建新的文件夹。执行脚本显示脚本执行了getActiveForm()
功能,但没有过去。因此,我相信它并没有进入我在第3行的'if'声明。我确信我缺少一些基本的东西,但我不太确定它是什么。任何有关这方面的帮助将不胜感激。
顺便说一句,我确实在我的收件箱中查看是否收到了触发器的错误消息,但我没有看到任何内容。
答案 0 :(得分:0)
您无法将参数传递给触发器功能。
答案 1 :(得分:0)
为什么使用触发器? 您可以在脚本中使用Folder类。
https://developers.google.com/apps-script/reference/drive/folder#addFolder(Folder)
var folders = DriveApp.addFolder("link in your Google Drive");
答案 2 :(得分:0)
这个有效:
function createFolder(e) {
var items = e.response.getItemResponses()
var name = items[1].getResponse();
new_folder = DriveApp.createFolder(name);
var submittedID = items[3].getResponse();
for (i = 0; i < submittedID.length; i++) {
var file = DriveApp.getFileById(submittedID[i]);
file.makeCopy(new_folder);
}
}
创建一个新文件夹,并将响应中的三个文件(图像,音频等)放入新文件夹中。我的第二个响应成为新文件夹的名称。通过这种方式,您可以轻松区分为每个提交上传的文件,而不是将它们全部放在同一个文件夹中。
不是完全你要求的但非常接近。
答案 3 :(得分:0)
右。所以这是我的便士价值。我没有经验,但我设法在一些严重的神经之后破解了这个。
然后将上传文件的副本添加到所述文件夹中,鲍勃是你的叔叔
function createFolder(e) {
var items = e.response.getItemResponses()
var documentName = items[0].getResponse();
var sourceFolder = DriveApp.getFolderById('copy and paste parent folderid here');
var new_folder = sourceFolder.createFolder(documentName);
var submittedID = items[3].getResponse();
for (var i = 0; i < submittedID.length; i++) {
var file = DriveApp.getFileById(submittedID[i]);
file.makeCopy(new_folder);
}
}
一个令人头痛的问题是在google电子表格中使用[i]方式找到答案,我可能会变得非常善变,但最终有效。为了确保您没有以空文件夹结束,请确保在用户实际上载文档之前必须提出所有问题。希望这有助于某人
我不想/需要这样做,但如果您要删除原始上传的文件,请使用[setTrashed(True)][1]
。在关闭&#34; for&#34;之前,在file.makeCopy下添加它。环。请注意,如果您这样做,响应电子表格中的链接将无效,但您将在子文件夹中获得上传文件的副本。