使用绑定到表单链接到的电子表格的 onFormSubmit,我编写了一个脚本来复制另一个电子表格并重命名它。目前,新名称是在脚本中设置的。不过,该表格的重点是让教师输入他们的电子邮件、姓氏、名字和教师编号,然后将注册表(电子表格)发送给他们供他们填写。我也希望复制的电子表格的新名称使用老师的姓氏和名字。到目前为止,我的脚本还不起作用。但根据研究,似乎是这样。所以,这是最初的脚本,它可以工作:
function onFormSubmit() {
const teacher = 'GuessKevin';
const SourceFolder = DriveApp.getFolderById('1ARnOku-h49TAZytmEGSnckAKaoMZqffQ');
const Files = DriveApp.getFileById('1_uHtcG-qLEeETGNbhRA4WNwQYcaltXbAtxgupYQNWLY');
const FileRename = Files.makeCopy(teacher + '-Registration-FallFestival', SourceFolder);
}
这是新脚本,它不起作用,甚至无法复制电子表格部分:
function onFormSubmit(e) {
const formResponses = e.getResponses();
const teacherEmail = formResponses[1].getResponse();
const teacherName = formResponses[2].getResponse() + formResponses[3].getResponse();
const teacherNum = formResponses[4].getResponse();
const SourceFolder = DriveApp.getFolderById('1ARnOku-h49TAZytmEGSnckAKaoMZqffQ');
const Files = DriveApp.getFileById('1_uHtcG-qLEeETGNbhRA4WNwQYcaltXbAtxgupYQNWLY');
const FileRename = Files.makeCopy(teacherName + '-Registration-FallFestival', SourceFolder);
}
我也尝试过使用表单的 ID,如下所示,但这也不起作用:
function onFormSubmit() {
const form = formApp.openById('1hKoK1FNLYohXqK3hhkNkQ6z-IQgzXGRUcjm0YEmvOE4');
const formResponses = form.getResponses();
const teacherEmail = formResponses[1].getResponse();
const teacherName = formResponses[2].getResponse() + formResponses[3].getResponse();
const teacherNum = formResponses[4].getResponse();
const SourceFolder = DriveApp.getFolderById('1ARnOku-h49TAZytmEGSnckAKaoMZqffQ');
const Files = DriveApp.getFileById('1_uHtcG-qLEeETGNbhRA4WNwQYcaltXbAtxgupYQNWLY');
const FileRename = Files.makeCopy(teacherName + '-Registration-FallFestival', SourceFolder);
}
非常感谢任何帮助。
您的脚本需要使用适用于电子表格绑定的onFormSubmit
触发脚本的
事件对象。
可以使用
Logger.log(JSON.stringify(e))
显示事件对象,但一般而言,它们是:
values
的数组中的值(其中第一个条目是时间戳)或 namedValues
的对象中的键/值对。在这个答案中,我使用了
values
数组。
提醒:
功能
makeTeacherSheet
必须由可安装的 onFormSubmit
触发器触发。由于该函数附加到电子表格,因此必须从同一电子表格“触发器”选项卡创建触发器。
function makeTeacherSheet(e) {
Logger.log(JSON.stringify(e))
var values = e.values
var teacherEmail = values[1]
var teacherName = values[2]+values[3]
var teacherNum = values[4]
Logger.log("DEBUG: email:"+teacherEmail+", Name: "+teacherName+", Number: "+teacherNum)
var SourceFolder = DriveApp.getFolderById('1ARnOku-h49TAZytmEGSnckAKaoMZqffQ')
var Files = DriveApp.getFileById('1_uHtcG-qLEeETGNbhRA4WNwQYcaltXbAtxgupYQNWLY')
var FileRename = Files.makeCopy(teacherName + '-Registration-FallFestival', SourceFolder)
}