使用 google 表单上的脚本写入 google 工作表中的单元格

Write to cell in google sheets using script on google form

我在 google 表单上有一个脚本,它使用来自表单提交的数据重命名目标文件夹中的文件。我希望记录提交的 google sheet 有一个与文件同名的列。表单提交给我留下 A:E 中的数据,我想在 F 中添加新列。我可能会使用 sheet 中的公式来实现这一点,但是 -

  1. 用于重命名我的文件的一个参数是 date/time 使用 Utilities.formatDate(现在),date/time,这似乎记录了一个时间稍微 与 google sheet 上记录为时间戳的时间不同 - 通常看起来相差 2 秒,但在事件中它是 more/less,使用 more/less 中的时间戳的公式=35=] sheet 可能不准确
  2. 表单提交会减少手动输入的行,这样公式就不会粘在新添加的行中的单元格中。我可以手动添加它,但这有点麻烦。

我希望 sheet 自动填充 F 列下方的相同输出,这样可以避免这两个问题。

var name = FormattedDate +'-'+来源+'-'+性别+'-'+年龄 file.setName(姓名)

完整代码如下 -

function onFormSubmit1() {
  var form=FormApp.getActiveForm();
  
  var length=form.getResponses().length;
  var gender=form.getResponses()[length-1].getItemResponses()[0].getResponse();
  var age=form.getResponses()[length-1].getItemResponses()[1].getResponse();
  var source=form.getResponses()[length-1].getItemResponses()[2].getResponse();
  var id=form.getResponses()[length-1].getItemResponses()[3].getResponse();
  var now = new Date();
  var FormattedDate = Utilities.formatDate(now, Session.getScriptTimeZone(), "yyyy.MM.dd HH:mm:ss");
  
  
  var file=DriveApp.getFileById(id);
  name = file.getName();
  
  var name = FormattedDate + ' - ' + source +' - ' + gender + ' - ' + age 
  file.setName(name);
  
  var source_folder = DriveApp.getFolderById('folderidcoderemoved'); 
  
}


我相信你的现状和目标如下。

  • 您的脚本已放入 Google 表单的脚本编辑器中。
  • 您的脚本是 运行 OnSubmit 触发器。
  • 提交表单时,您想将文件名放入“F”列。

这样的话,下面的修改怎么样?

修改后的脚本:

请设置ssIdsheetName

function onFormSubmit1() {
  var form = FormApp.getActiveForm();
  var length = form.getResponses().length;
  var gender = form.getResponses()[length - 1].getItemResponses()[0].getResponse();
  var age = form.getResponses()[length - 1].getItemResponses()[1].getResponse();
  var source = form.getResponses()[length - 1].getItemResponses()[2].getResponse();
  var id = form.getResponses()[length - 1].getItemResponses()[3].getResponse();

  var now = new Date(); // or form.getResponses()[length - 1].getTimestamp();

  var FormattedDate = Utilities.formatDate(now, Session.getScriptTimeZone(), "yyyy.MM.dd HH:mm:ss");
  var file = DriveApp.getFileById(id);
  name = file.getName();
  var name = FormattedDate + ' - ' + source + ' - ' + gender + ' - ' + age
  file.setName(name);
  var source_folder = DriveApp.getFolderById('folderidcoderemoved');

  // And, I added below script.
  var ssId = "###"; // Please set the Spreadsheet ID of Spreadsheet that the submitted data is put.
  var sheetName = "###"; // Please set the sheet name of submitted data.
  var sheet = SpreadsheetApp.openById(ssId).getSheetByName(sheetName);
  sheet.getRange("F" + sheet.getLastRow()).setValue(name);
}
  • 在此修改中,当脚本为运行时,name的值被放入最后提交行的“F”列。
  • 我无法理解您 var source_folder = DriveApp.getFolderById('folderidcoderemoved'); 的剧本。如果您的展示脚本不完整,请注意这一点。

注:

  • 关于now的取值,请根据您的情况选择var now = new Date();var now = form.getResponses()[length - 1].getTimestamp();