在FormSubmit上触发电子表格的复制和重命名

问题描述 投票:0回答:1

使用绑定到表单链接到的电子表格的 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);
}

非常感谢任何帮助。

google-apps-script google-sheets triggers
1个回答
0
投票

您的脚本需要使用适用于电子表格绑定的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)
}
© www.soinside.com 2019 - 2024. All rights reserved.