Saa*_*d A 4 google-apps-script google-forms
我正在通过应用程序脚本使用Google表单。我想确定当前提交的表单是处于编辑模式还是新的响应?如何在onSubmit事件中进行检查。
如果是,则该用户正在编辑先前提交的响应,而不是我想要将电子表格中的值更改为“是”。
以下是我的代码段:
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');
}
Run Code Online (Sandbox Code Playgroud)
Google表单提交事件没有一个字段,该字段可以帮助您了解响应是新响应还是响应编辑。正如Sandy在问题评论中所说的那样,Form Servicer类和方法,或者响应值都没有提供帮助的内容。
另一方面,Google表格提交事件具有一个可以提供帮助的范围字段。绑定到Google电子表格的以下脚本记录了响应行:
function onFormSubmit(e){
var response = e.range;
Logger.log(response.getRow());
}
Run Code Online (Sandbox Code Playgroud)
上面的内容可用于保持列更新以保存修订计数器。如果相应的单元格为空,则响应为新响应,否则为响应编辑。
以下脚本将其绑定到接收表单响应的电子表格。它需要在表单上提交可安装触发器。脚本注释中包含其他适应说明。
/*
*
* Global Variables
*
*/
/*
* Sheet name used as destination of the form responses
*/
var sheetName = 'Form Responses';
/*
* Name of the column to be used to hold the response revision counter
* It should match exactly the header of the related column,
* otherwise it will do nothing.
*/
var revisionsColumn = 'Rev';
/*
* Responses starting row
*/
var startRow = 2;
function setRevisionCounts(e){
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sheetName);
var headers = sheet.getRange(1, 1, 1, sheet.getLastColumn()).getValues();
var revisionsIndex = headers[0].indexOf(revisionsColumn);
var data = sheet.getDataRange().getValues();
var response = e.range;
var rowIndex = response.getRow()-1;
var rev = data[rowIndex][revisionsIndex]+1;
sheet.getRange(rowIndex+1, revisionsIndex+1).setValue(rev);
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2729 次 |
最近记录: |