我正在通過應用腳本使用Google表單。我想確定當前正在提交的表單是處於編輯模式還是新的響應?我如何在onSubmit事件中檢查這一點。Google表單應用腳本:如何檢查當前提交的內容是編輯回覆還是新回覆
如果是,該用戶正在編輯以前提交的響應,而不是我想將電子表格中的值更改爲「是」。
下面是我的代碼片段:
function testExcel2() {
var email = "email";
var s = SpreadsheetApp.openById("id");
var sheet = s.getSheets()[0];
var headers = sheet.getRange(1,1,1,sheet.getLastColumn() - 1).getValues()[0];
var datarow = sheet.getRange(sheet.getLastRow(),1,1,sheet.getLastColumn() - 1).getValues()[0];
var message = "";
for(var i in headers)
{
message += "" + headers[i] + " : " + datarow[i] + "\n\n";
}
MailApp.sendEmail(email, "Submitted Data Test", message);
var af = FormApp.getActiveForm();
//af.setCustomClosedFormMessage("The form is currently processing a submission, please refresh the page.");
af.setConfirmationMessage('Thanks for responding!')
//af.setAcceptingResponses(false);
var rowKey = "o" + sheet.getLastRow();
var editCell = sheet.getRange(rowKey).setValue('no');
}
我不知道任何完美的方式來確定,*從表格*,是否提交是一個編輯或新的迴應。我花了很多時間試圖想出一些東西。我希望有一種方法。我將響應ID保存到電子表格中,並在電子表格中查找表單提交的響應ID。因此,我知道確定它是否爲編輯的唯一方法是在Form外部創建一組數據。在比較舊/新時間戳之前,編輯的時間戳會在表單數據中更新。所以你不能這樣想。 –
此外,編輯的響應似乎放在數據的末尾,所以您無法比較當前的表單提交是否在數據的末尾。無論是新的響應還是編輯的響應,它總是在數據的末尾。它似乎是按時間戳排序的。我認爲這是Google Forms中的一個主要缺陷。我可能會將第二組數據保存到文本文件中,並將其用作新舊數據的比較。 –
@SandyGood。我只是做了一個測試。在我的測試中,編輯響應時未對響應進行排序,因此編輯的響應保持其位置。 –