Appscript 不是 运行 onFormSubmit

Appscript not running onFormSubmit

所以我查看了很多关于这个问题的问题并尝试了所有的修复,但它仍然没有 运行 我的代码。

我已经对其进行了测试,因此它不会创建表单和在电子表格中创建表单的方法,但都无法更新我希望它更新的单元格。

要执行另一种方法,我只是从代码中删除了前 3 个函数,并创建了一个在提交表单时调用的新触发器。

我已经测试了该函数是否能够更新正确的单元格,并且它可以正常执行。但是,当我引入表单数据元素时,由于某种原因它不能这样做。

如果有人能帮助我解决这个问题,我将不胜感激!

/**
 * A special function that inserts a custom menu when the spreadsheet opens.
 */
function onOpen() {
  var menu = [{name: 'Create RSVP', functionName: 'RSVP_'}];
  SpreadsheetApp.getActive().addMenu('RSVP', menu);
}

/**
 * A set-up function
 */
function RSVP_() {
  var ss = SpreadsheetApp.getActive();
  var sheet = ss.getSheetByName('Sheet1');
  setUpForm_(ss);
  ScriptApp.newTrigger('onFormSubmit').forSpreadsheet(ss).onFormSubmit().create();
  ss.removeMenu('RSVP');
}

/**
 * Creates a Google Form that allows students to RSVP
 *
 */
function setUpForm_(ss) {
  var form = FormApp.create('RSVP Form');
  form.setDestination(FormApp.DestinationType.SPREADSHEET, ss.getId());
  form.addTextItem().setTitle('First Name').setRequired(true);
  form.addTextItem().setTitle('Last Name').setRequired(true);
  form.addTextItem().setTitle('Email').setRequired(true);
  form.addMultipleChoiceItem().setTitle('Are you still interested in attending?')
          .setChoiceValues(['Yes','No']).setRequired(true);
}

/**
 * Updates RSVP cell
 *
 * @param {Object} e The event parameter for form submission to a spreadsheet;
 *     see https://developers.google.com/apps-script/understanding_events
 */
function onFormSubmit(e) {
  var ss = SpreadsheetApp.getActive();
  var sheet = ss.getSheetByName('Sheet1');
  var range = sheet.getDataRange();
  var values = range.getValues();
  for (var i = 1; i < values.length; i++) {
    var session = values[i];
    var title = session[2];
    if (e.namedValues['Email'][0] && e.namedValues['Email'][0] == title) {
      sheet.getRange(i+1, 5, 1, 1).setValue([[e.namedValues['Are you still interested in attending?'][0]]])

    }
  }
  var sheet = ss.getSheetByName('Sheet2');
  var nextRow = sheet.getLastRow()+1;
  sheet.getRange(nextRow, 1, 1, 3).setValues([[e.namedValues['First Name'][0], e.namedValues['Last Name'][0], e.namedValues['Email'][0], e.namedValues['Are you still interested in attending?'][0]]]);
}

试试这个:

function onFormSubmit(e) {
  var ss = SpreadsheetApp.getActive();
  var sheet = ss.getSheetByName('Sheet1');
  var range = sheet.getDataRange();
  var values = range.getValues();
  for (var i = 1; i < values.length; i++) {
    if (e.namedValues['Email'] == values[i][2]) {
      sheet.getRange(i+1, 5, 1, 1).setValue(e.namedValues['Are you still interested in attending?'])
    }
  }
}