为什么会forSpreadsheet(SS).onFormSubmit()触发运行次数太多(即多于一次= 7)

问题描述 投票:1回答:1

我是很新的谷歌脚本(也相当新的计算器),所以原谅任何不便。

我修改本指南,并结束了与底部的代码。

https://developers.google.com/apps-script/quickstart/forms

我的最终目标是简单地接受一些数字,做他们的计算和来自不同用户返回一些数字。

在代码中,我使用电子表格,并创建一个表单,当响应被提交的代码应返回的电子邮件给用户。一切正常,但不是1,7电子邮件发送。

我简化了代码,并将其发送同一封邮件每次仍然做同样的(发送电子邮件7)这更容易阅读的版本太

提前致谢

function onOpen() {
  var menu = [{name: 'Set up conference', functionName: 'setUpConference_'}];
  SpreadsheetApp.getActive().addMenu('Butten', menu);
}


function setUpConference_() {
  if (ScriptProperties.getProperty('calId')) {
    Browser.msgBox('Your conference is already set up. Look in Google Drive!');
  }
  var ss = SpreadsheetApp.getActive();
  var sheet = ss.getSheetByName('but');
  var range = sheet.getDataRange();
  var values = range.getValues();
  setUpForm_(ss, values);
  ScriptApp.newTrigger('onFormSubmit').forSpreadsheet(ss).onFormSubmit()
      .create();
  ss.removeMenu('Butten');
}


function setUpForm_(ss, values) {

  var form = FormApp.create('Conference Form');
  var header = form.addSectionHeaderItem().setTitle('Bilgileriniz');
  form.addTextItem().setTitle('Name').setRequired(true);
  form.addTextItem().setTitle('Email').setRequired(true);


  form.setDestination(FormApp.DestinationType.SPREADSHEET, ss.getId());

  var header = form.addSectionHeaderItem().setTitle('Pratik notlariniz');

  for (var i = 1; i < values.length; i++) {
    var session = values[i];
    var ders = session[0].toString();

    var item = form.addTextItem().setTitle(ders);

    var textValidation = FormApp.createTextValidation()
    .setHelpText('0 le 100 arasinda bir sayi olmali')
    .requireNumberBetween(0, 100)
    .build();
    item.setValidation(textValidation);

  }

}


function onFormSubmit(e) {

  MailApp.sendEmail({
  to: '[email protected]',
  subject: 'exp',
  body: 'exp'});
}
google-apps-script
1个回答
1
投票
function setUpConference_() {
  var ss = SpreadsheetApp.getActive();
  var triggerId = ScriptApp.newTrigger("onFormSubmit")
                           .forSpreadsheet(ss)
                           .onFormSubmit()
                           .create()
                           .getUniqueId();
  Logger.log("New ID: "+triggerId);  

  var allTriggers = ScriptApp.getProjectTriggers();
  for (var i = 0; i < allTriggers.length; i++) {
    if (allTriggers[i].getUniqueId() != triggerId) {
      Logger.log("Delete ID: "+allTriggers[i].getUniqueId()); 
      ScriptApp.deleteTrigger(allTriggers[i]);
    }
  } 

  ss.toast("already done.", "TriggerBuilder"); 
}
© www.soinside.com 2019 - 2024. All rights reserved.