function assignEditUrls() {
var form = FormApp.openById('Your form key goes here');
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Your responses Google Sheet name goes here - The tab name, not the file name');
var data = sheet.getDataRange().getValues();
var urlCol = Column number where URLs get entered goes here;
var responses = form.getResponses();
var timestamps = [],
urls = [],
resultUrls = [];
for (var i = 0; i < responses.length; i++) {
timestamps.push(responses[i].getTimestamp().setMilliseconds(0));
urls.push(responses[i].getEditResponseUrl());
}
for (var j = 1; j < data.length; j++) {
resultUrls.push([data[j][0] ? urls[timestamps.indexOf(data[j][0].setMilliseconds(0))] : '']);
}
sheet.getRange(2, urlCol, resultUrls.length).setValues(resultUrls);
}
我目前正在使用此代码,它允许我更新生成编辑链接以编辑相应记录的记录。但挑战在于它也会改变时间戳。
问题是
我们如何修改此代码,以便我可以为 Google 表格中的特定记录创建和上次修改日期和时间?
非常感谢任何帮助。非常感谢。
答案 0 :(得分:0)
您可以创建一个 onFormSubmit 触发器来在添加新记录时保存行的创建日期。通过使用这种方法,我们可以轻松存储创建日期和修改日期(时间戳),您可以将其用于其他操作。
示例:
这里我更新了测试数据 1 的电子邮件:
代码:
function assignEditUrls() {
var form = FormApp.openById('Enter form id here');
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Form Responses 1');
var data = sheet.getDataRange().getValues();
var urlCol = 9;
var responses = form.getResponses();
var urls = [];
for (var i = 0; i < responses.length; i++) {
urls.push([responses[i].getEditResponseUrl()]);
}
sheet.getRange(2, urlCol, urls.length).setValues(urls);
}
function triggerTest(e){
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Form Responses 1');
var createdDateCol = 8;
var row = e.range.getRow();
sheet.getRange(1, createdDateCol, 1, 1).setValue("Created Date"); // Add created date header
var cdRange = sheet.getRange(row, createdDateCol, 1, 1);
if(cdRange.getValue() == ''){ // this indicates that the record is new
cdRange.setValue(e.namedValues['Timestamp'])
}
}