【发布时间】:2020-08-21 11:42:23
【问题描述】:
当我将表单提交到谷歌表格时,我试图添加一个自动时间戳,但问题是我希望在一行的第一列中添加时间戳,然后将其余数据推算到之后。 我似乎无法让我的 processForm 函数从第二列开始,而让第一列不理会。如果我尝试在 ws.appendRow 部分下放置一个空的 formObject ,它将覆盖我的 onEdit 函数并且不允许出现日期。有什么方法可以让我从第二列而不是第一列开始追加我的行?
function doGet(request) {
return HtmlService.createTemplateFromFile('Index')
.evaluate();
}
/* @Include JavaScript and CSS Files */
function include(filename) {
return HtmlService.createHtmlOutputFromFile(filename)
.getContent();
}
function onEdit(event)
{
var timezone = "GMT-5";
var timestamp_format = "MM-dd-yyyy"; // Timestamp Format.
var updateColName = "Total Defects";
var timeStampColName = "Date";
var sheet = event.source.getSheetByName('Data'); //Name of the sheet where you want to run this script.
var actRng = event.source.getActiveRange();
var editColumn = actRng.getColumn();
var index = actRng.getRowIndex();
var headers = sheet.getRange(1, 1, 1, sheet.getLastColumn()).getValues();
var dateCol = headers[0].indexOf(timeStampColName);
var updateCol = headers[0].indexOf(updateColName); updateCol = updateCol+1;
if (dateCol > -1 && index > 1 && editColumn == updateCol) { // only timestamp if 'Last Updated' header exists, but not in the header row itself!
var cell = sheet.getRange(index, dateCol + 1);
var date = Utilities.formatDate(new Date(), timezone, timestamp_format);
cell.setValue(date);
}
}
/* @Process Form */
function processForm(formObject) {
var url = "LINK TO SPREADSHEET URL";
var ss = SpreadsheetApp.openByUrl(url);
var ws = ss.getSheetByName("Data");
ws.appendRow([
formObject.data_1,
formObject.data_2,
formObject.data_3
]);
}
'''
【问题讨论】:
标签: javascript html google-apps-script