在每个新的 Google 表单提交时存储并增加一个值

Store and Increment a value by one on every new Google Form submission

当客户填写表格时,我希望创建一个新的票号并通过电子邮件发送。

第一个错误:

"cannot read property "range" from undefined (line 9, file "Code")

然后,在第 11、13 和 21 行,我有一些代码可以控制售票柜台在每次提交表单时生成唯一的票号。当我通过系统 运行 2 个测试表格时,票号没有填充,计数器变量也没有改变。

function onFormSubmit(e) {

  var activateSheet = SpreadsheetApp.getActiveSpreadsheet();

  SpreadsheetApp.setActiveSheet(activateSheet.getSheetByName('Form Responses 1'));

  var sheet = SpreadsheetApp.getActiveSheet();

  var row = e.range.getRowIndex(); *** line 9***

  var ticketCounter = 100; ***line 11***

  var ticketNumber = "FCB" + ticketCounter; ***line 13***

  var etrolControlsServiceEmail = "controls-service@etrol.net";

  var timestamp = sheet.getRange(row, 1).getValues();

  var ticketNumberLocation = sheet.getRange(row, 2);

  ticketNumberLocation.setValue(ticketNumber); ***line 21***

  var location = sheet.getRange(row, 3).getValues();

  var reportedBy = sheet.getRange(row, 4).getValues();

  var customerEmailAddress = sheet.getRange(row, 5).getValues();

  var priority = sheet.getRange(row, 6).getValues();

  var customerIssue = sheet.getRange(row, 7).getValues();

  var subject =  "An issue has been reported at " + location + " " + timestamp + " " + "Ticket Number " + ticketNumber;

  var emailBody = "To: Envirotrol Controls Service Department " + "\nRE: Issue reported at " + location + "." + "\n\nAn issue has been reported  at " + location + ". Please see the details below:" + "\n\nTicket Number: " + ticketNumber + "\nLocation: " + location + "\nReported By: " + reportedBy + "\nPriority Level: " + priority + "\nIssue: " + customerIssue;

  MailApp.sendEmail(customerEmailAddress + ", " + etrolControlsServiceEmail, subject, emailBody);

  ticketCounter += 1};

此代码显示了在电子表格文档属性中存储、检索和递增 ticketCounter 值的策略。

function onFormSubmit(e) {
  var ss = SpreadsheetApp.getActiveSpreadsheet(),
      shFormResponses = ss.getSheetByName('Form Responses 1');

  ss.setActiveSheet(shFormResponses);

  var row = e.range.getRowIndex(),
      ticketCounter = PropertiesService
        .getDocumentProperties()
        .getProperty('ticketCounter');

  if (ticketCounter === undefined || ticketCounter === null) {
    PropertiesService.getDocumentProperties().setProperty('ticketCounter', '100');
    ticketCounter = '100';
  };

  var ticketNumber = "FCB" + ticketCounter,
      etrolControlsServiceEmail = "controls-service@etrol.net",
      timestamp = shFormResponses.getRange(row, 1).getValues(),
      ticketNumberLocation = shFormResponses.getRange(row, 2);

  ticketNumberLocation.setValue(ticketNumber);

  var location = shFormResponses.getRange(row, 3).getValues();
  var reportedBy = shFormResponses.getRange(row, 4).getValues();
  var customerEmailAddress = shFormResponses.getRange(row, 5).getValues();
  var priority = shFormResponses.getRange(row, 6).getValues();
  var customerIssue = shFormResponses.getRange(row, 7).getValues();
  var subject =  "An issue has been reported at " + location + " " + 
       timestamp + " " + "Ticket Number " + ticketNumber;
  var emailBody = "To: Envirotrol Controls Service Department " + 
      "\nRE: Issue reported at " + location + "." + 
      "\n\nAn issue has been reported  at " + location + 
      ". Please see the details below:" + "\n\nTicket Number: " + 
      ticketNumber + "\nLocation: " + location + "\nReported By: " + 
      reportedBy + "\nPriority Level: " + priority + "\nIssue: " + 
      customerIssue;

  MailApp.sendEmail(customerEmailAddress + ", " + etrolControlsServiceEmail, subject, emailBody);

  //Values are stored as text in the Properties Service
  var numberAsNumber = Number(ticketCounter);
  ticketCounter = (numberAsNumber + 1).toString(); 

  PropertiesService
    .getDocumentProperties()
    .setProperty('ticketCounter', ticketCounter);
};