我正在努力解决以下问题:
我有一个 Google 表单,上面有 40 多个问题。最后一张需要填写表格的人提供几张照片。
我想自动化整个过程并最终得到以下结果:
最终结果几乎是,一旦有人填写了表格,就会创建一个新文件夹,其中包含他的第一个答案,并且该文件夹包含他对问题的答复(在谷歌或电子表格中,并不重要)以及所有他附加的照片/文件也在此文件夹中。
我一直在努力,只能到达创建文件夹和电子表格的位置,但我无法将照片移动到该文件夹。
首先,我尝试通过 Zapier 等无代码平台实现自动化。这不起作用(至少对我来说),因为我有太多变量(我既不知道新文件夹的名称,也不知道客户提交表单之前的文件名称)。
然后我在 Chat-GPT 的帮助下尝试使用脚本(我不是程序员):
但再一次,它只创建文件夹并添加电子表格。里面没有照片。
任何帮助将不胜感激!
附注我对任何类型的解决方案持开放态度 - 使用不同的平台,使用无编码,甚至学习如何创建特定的代码
P.S.2 找到了上传代码的方法
脚本1:
function onFormSubmit(e) {
var formResponses = e.values;
var folderName = formResponses[1];
var parentFolder = getOrCreateParentFolder('Surveys');
var folder = parentFolder.createFolder(folderName);
var spreadsheet = SpreadsheetApp.create(folderName + '_Responses');
DriveApp.getFileById(spreadsheet.getId()).moveTo(folder);
var questions = e.source.getSheetByName("Form Responses 1").getRange(1, 1, 1, e.values.length).getValues()[0];
spreadsheet.getActiveSheet().appendRow(questions);
var sheet = spreadsheet.getActiveSheet();
sheet.appendRow(formResponses.slice(0)); // Start from the second item (index 1).
var files = e.response.getFiles();
for (var i = 0; i < files.length; i++) {
var file = DriveApp.getFileById(files[i].getId());
folder.createFile(file); // Move the uploaded file to the newly created folder.
}
}
function getOrCreateParentFolder(folderName) {
var parentFolder;
var folders = DriveApp.getFoldersByName(folderName);
if (folders.hasNext()) {
parentFolder = folders.next();
} else {
parentFolder = DriveApp.createFolder(folderName);
}
return parentFolder;
}
function triggerSecondScript() {
ScriptApp.newTrigger('movePhotosToDestinationFolders')
.timeBased()
.after(1 * 60 * 2000) // Adjust the delay time (in milliseconds) as needed
.create();
}
脚本2:
function movePhotosToDestinationFolders() {
var sourceFolderId = "1TeXcyIYbwmUIB8o5HQlhreCLwsE2R1Ak1mqtzNipdQ6H0zrhvR3sjZ3WGB72xSkYI8WZW-MW";
var destinationFolderName = "Surveys";
var sourceFolder = DriveApp.getFolderById(sourceFolderId);
var files = sourceFolder.getFiles();
while (files.hasNext()) {
var file = files.next();
var fileName = file.getName();
var email = fileName.split('.')[0];
var destinationFolder = getOrCreateParentFolder(destinationFolderName).getFoldersByName(email);
if (destinationFolder.hasNext()) {
destinationFolder.next().createFile(file);
file.setTrashed(true); // Delete the original file.
} else {
// Handle cases where the folder doesn't exist for this email (optional).
}
}
}
function getOrCreateParentFolder(folderName) {
var parentFolder;
var folders = DriveApp.getFoldersByName(folderName);
if (folders.hasNext()) {
parentFolder = folders.next();
} else {
parentFolder = DriveApp.createFolder(folderName);
}
return parentFolder;
}
我正在开发relay.app,这是一个类似于 Zapier 的自动化工具。我看到你的问题并意识到这个自动化工作流程在 Relay 中是相当可行的,但有一些注意事项。
这是 Relay.app 中的示例剧本,主要满足您的需要 https://run.relay.app/playbooks/clmapjo2b000k0qm21nn19t4a/view?tfa=tfauIsVB0DYIMo5I4ptZBMaOw
这是我在本示例中使用的 Google 表单示例。只需要简化 3 个问题: https://forms.gle/XV4AbcPDADfnJSTh6
这是 Google Drive 文件夹,其中包含我的测试表单回复的子文件夹: https://drive.google.com/drive/folders/1-vGNObFSF3ly07_HugC30hR4usGE9Fmg?usp=sharing
该手册每小时检查一次新的表单响应,并执行概述的所有步骤 - 大部分如您所描述的那样。
注意事项:
如果您需要我帮助设置,请告诉我,或者直接向我发送电子邮件至 thijs@[产品名称]