Google Script onChange не обнаруживает автоматическое создание строк - PullRequest
0 голосов
/ 04 февраля 2020

У меня есть данные из приложения флаттера, пишущего на лист Google. Как только новая строка будет добавлена, я хотел бы отправить электронное письмо, используя скрипт Google. Я реализовал электронную почту в сценарии, и когда я запускаю из редактора, он работает нормально. или когда я вручную изменяю свой лист Google, триггер при изменении обнаруживает и скрипт запускается, но когда я отправляю данные на лист из моего приложения флаттера, и он добавляет новую строку на лист, скрипт не выполняется. пожалуйста помоги. см. код ниже.

function email() {
  Logger.log("Function began");
  var ss = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().activate(); 
  var template = SpreadsheetApp.openByUrl("sheet_link").getSheetByName("template").getRange(1, 1).getValue()
  var lr = ss.getLastRow();



  for(i = lr;  i <= lr; i++){
    if(i == null){
    i--
    } else{

    var name = ss.getRange(i,1).getValues();
    var email = ss.getRange(i, 2).getValues();
    var phone = ss.getRange(i, 3).getValue();


    var messagebody = template.replace("{name}", name).replace("{email}", email).replace("{phone}", phone));


     MailApp.sendEmail(email, "email confirmation", messagebody);
     Logger.log("success");
     Logger.log(email);
    }

  }
}

1 Ответ

0 голосов
/ 04 февраля 2020
Триггер

onChange не обнаруживает автоматическое создание строк, но обнаруживает обновление формулы =IMPORTRANGE

. Это позволяет реализовать обходной путь:

  • Создать новый лист в вашей электронной таблице
  • Вставьте в ячейку A1 второго листа формулу =IMPORTRANGE(IMPORTRANGE(spreadsheet_url, range_string)
  • Когда вы видите сообщение You need to connect these sheets. - нажмите Allow access
  • Теперь триггер onChange будет срабатывать при каждом изменении вашего диапазона, указанного в =IMPORTRANGE
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...