0
votes

I would like to know how we can add a trigger that fire onFormSubmit but in the code.

I know how to do it this way:
Script -> Edition -> Trigger of the project -> Add New

And then add the trigger base on the spreadsheet onFormsubmit to fire the function timerEvent.

As you can see in this screenshot: enter image description here

But my problem is: how you can create the trigger programmatically?

https://developers.google.com/apps-script/guides/triggers/installable

/* Gobal settings */

var ss = SpreadsheetApp.getActiveSpreadsheet();
var sh = ss.getActiveSheet();

var RangeSheet = ss.getRangeByName("SheettoSync");
var RangeCalendar = ss.getRangeByName("CalendarID");
var RangeMail = ss.getRangeByName("AlertMail");

var calId = RangeCalendar.getValue();
var alertEmail = RangeMail.getValue();
var sheetName = RangeSheet.getValue();

function setTrigger() {
  var ss = SpreadsheetApp.getActive();
  ScriptApp.newTrigger('timerEvent')
    .forSpreadsheet(sheetName)
    .onFormSubmit()
    .create();
}

But this code doesn't work, nothing happens to my spreadsheet. However if I set the trigger through the web interface it works as expected.

Thanks a lot for your help,

1
forSpreadsheet() accepts spreadsheet id or spreadsheet. sheetName probably doesn't contain id - TheMaster

1 Answers

0
votes

Change your code to

function setTrigger() {
  var ss = SpreadsheetApp.getActive();
  ScriptApp.newTrigger('timerEvent')
    .forSpreadsheet(ss)
    .onFormSubmit()
    .create();
}

And then you need to run the function setTrigger() once manually.