Итак, я пытался отправить электронное письмо через 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]
});
}
}
Любой взгляд на ситуацию будет встречен беспримерной оценкой.
Приветствия