Попытка «установить» триггер из редактора скрипта возвращает «У вас нет разрешения на вызов newTrigger» - PullRequest
0 голосов
/ 03 сентября 2018

Итак, я пытался отправить электронное письмо через MailApp внутри функции onFormSubmit. Недавно я узнал, что простые триггеры не имеют расширенного доступа к службам, таким как почта, но делают доступный для установки.

Итак, я отправился на поиски в интернете того, как сделать устанавливаемый триггер, я не совсем понимаю документацию Google для них и не нашел ни одного полезного видео / форума, который бы облегчал их использование. чтобы понять,

Поэтому я обращаюсь к вам, вы, группа гениев.

Через редактор скриптов я вызываю это вручную

function CreateFormSubmitTrigger() {

var ss = SpreadsheetApp.getActive();
ScriptApp.newTrigger('formDone')
.forSpreadsheet(ss)
.onFormSubmit()
.create()

}

каждый раз, когда я запускаю его, он возвращает "У вас нет разрешения на вызов newTrigger (строка 7, файл" Код ")"

Функция, для которой я пытаюсь создать триггер, приведена ниже. Когда я использовал это для триггеров текущего проекта> электронная таблица> onFormSubmit. Это тоже не сработало.

function formDone(e) {

Utilities.sleep(3000)

var range = e.range;
var ss = range.getSheet();
var row = range.getRowIndex();

var tactics = 
Sheets.Spreadsheets.Values.get('id', "A:AQ"+row);

var headers = 
Sheets.Spreadsheets.Values.get('id', 'A1:U1');
var templateID = "id"

var i = 0; i < tactics.values.length;

var Timestamp = tactics.values[i][0];
var IDCFREF = tactics.values[i][2];
var raisedby = tactics.values[i][4];
var AccMan = tactics.values[i][6];
var Contrib = tactics.values[i][7];
var Contract = tactics.values[i][8];
var CompName = tactics.values[i][9];
var ValidFrom = tactics.values[i][10];
var ValidTo = tactics.values[i][11];
var Freq = tactics.values[i][12];
var PDetailFreq = tactics.values[i][13];
var BillType = tactics.values[i][14];
var TypeOfRebate = tactics.values[i][15];
var RebateDetails = tactics.values[i][16];
var RTarget = tactics.values[i][17];
var GiveDeets = tactics.values[i][19];
var WhyGiveRebate = tactics.values[i][20];
var documentID = DriveApp.getFileById(templateID).makeCopy().getId();

console.log({message: IDCFREF})

if (DriveApp.getFilesByName("Rebate " + IDCFREF + " Request").hasNext()){
    DriveApp.getFilesByName("Rebate " + IDCFREF + " Request").next().setTrashed(true)
    } else {
    }
DriveApp.getFileById(documentID).setName('Rebate ' + IDCFREF + ' Request');

var body1 = DocumentApp.openById(documentID).getBody();
var header = DocumentApp.openById(documentID).getHeader();

header.replaceText('##IDCF##', IDCFREF)
body1.replaceText('##REF##', IDCFREF)
body1.replaceText('##RAISED##', raisedby)
body1.replaceText('##ACCMAN##', AccMan)
body1.replaceText('##CONTRIB##', Contrib)
body1.replaceText('##SIGNED##', Contract)
body1.replaceText('##NAME##', CompName)
body1.replaceText('##FROM##', ValidFrom)
body1.replaceText('##TO##', ValidTo)
body1.replaceText('##FREQ##', Freq)
body1.replaceText('##BESPOKE##', PDetailFreq)
body1.replaceText('##BILL##', BillType)
body1.replaceText('##TYPE##', TypeOfRebate)
body1.replaceText('##DEETS##', RebateDetails)
body1.replaceText('##TARGET##', RTarget)
body1.replaceText('##FULL##', GiveDeets)
body1.replaceText('##ELAB##', WhyGiveRebate)

Utilities.sleep(5000)

var filemail = DriveApp.getFileById(documentID)

if(DocumentApp.openById(documentID).getBody().findText("#")) {
  MailApp.sendEmail({
  to: "email",
  subject: "Rebate Request " + IDCFREF + " - Pending",
  body: "",

  attachments: [filemail]
  })
    } else {

  MailApp.sendEmail({
  to: "email",
  subject: "Rebate Request " + IDCFREF + " - Complete",
  body: "rebates",

  attachments: [filemail]
  });
 }
}

Любой взгляд на ситуацию будет встречен беспримерной оценкой.

Приветствия

...