使用 google 表单上的脚本写入 google 工作表中的单元格
Write to cell in google sheets using script on google form
我在 google 表单上有一个脚本,它使用来自表单提交的数据重命名目标文件夹中的文件。我希望记录提交的 google sheet 有一个与文件同名的列。表单提交给我留下 A:E 中的数据,我想在 F 中添加新列。我可能会使用 sheet 中的公式来实现这一点,但是 -
- 用于重命名我的文件的一个参数是 date/time 使用 Utilities.formatDate(现在),date/time,这似乎记录了一个时间稍微 与 google sheet 上记录为时间戳的时间不同 - 通常看起来相差 2 秒,但在事件中它是 more/less,使用 more/less 中的时间戳的公式=35=] sheet 可能不准确
- 表单提交会减少手动输入的行,这样公式就不会粘在新添加的行中的单元格中。我可以手动添加它,但这有点麻烦。
我希望 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”列。
这样的话,下面的修改怎么样?
修改后的脚本:
请设置ssId
和sheetName
。
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();
。
我在 google 表单上有一个脚本,它使用来自表单提交的数据重命名目标文件夹中的文件。我希望记录提交的 google sheet 有一个与文件同名的列。表单提交给我留下 A:E 中的数据,我想在 F 中添加新列。我可能会使用 sheet 中的公式来实现这一点,但是 -
- 用于重命名我的文件的一个参数是 date/time 使用 Utilities.formatDate(现在),date/time,这似乎记录了一个时间稍微 与 google sheet 上记录为时间戳的时间不同 - 通常看起来相差 2 秒,但在事件中它是 more/less,使用 more/less 中的时间戳的公式=35=] sheet 可能不准确
- 表单提交会减少手动输入的行,这样公式就不会粘在新添加的行中的单元格中。我可以手动添加它,但这有点麻烦。
我希望 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”列。
这样的话,下面的修改怎么样?
修改后的脚本:
请设置ssId
和sheetName
。
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();
。