Запущенная электронная почта не работает с момента перехода на V8 Runtime - PullRequest
0 голосов
/ 25 февраля 2020

Прежде всего позвольте мне заявить, что все мое кодирование самоучка, поэтому мои знания функциональны, но не глубоки. Я создаю таблицу Google для моей HR-команды в моей компании, чтобы отслеживать оплачиваемое время. Я создал триггеры для отправки электронных писем, когда было отправлено время. Он работал до перехода на V8, но не сейчас, и я не знаю достаточно о синтаксисе, чтобы найти проблему.

function sendNotification(e){

  if(e.range.getColumn()=13 && e.value='Yes')

{
 //Employee Name and Email Address
 var EmployeeName = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("PTO Earnings").getRange("R3"); 
 var Employee = EmployeeName.getValue(); 
 var EmployeeEmailRange = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("PTO Earnings").getRange("S3");
 var EmployeeEmailAddress = EmployeeEmailRange.getValues();

 //Approver Name and Email Address
 var ApproverName = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("PTO Earnings").getRange("R4"); 
 var Approver = ApproverName.getValue();
 var ApproverEmailRange = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("PTO Earnings").getRange("S4");
 var ApproverEmailAddress = ApproverEmailRange.getValues();

 //HR Email Address
 var HREmailRange = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("PTO Earnings").getRange("S5");
 var HREmailAddress = HREmailRange.getValues();

 //Link to Employee's PTO Spreadsheet 
 var SheetLink = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("PTO Earnings").getRange("R1"); 
 var Link = SheetLink.getValue();

 //Email Content
 var subject = 'PTO Submitted for '+Employee+' for '+e.range.getSheet().getName()+'.';
 var body = 'Dear '+Approver+','+"\n\n"+'A PTO Request has been submitted by: '+Employee+', at:'+"\n\n"+Link +"\n\n"+'Thank you.'+"\n\n"+'Imagine This HR';
 var recipient = [EmployeeEmailAddress, ApproverEmailAddress,HREmailAddress];

 MailApp.sendEmail(recipient, subject, body);
 }
}

Пожалуйста, помогите!

Ответы [ 3 ]

1 голос
/ 25 февраля 2020

Кажется, что удаление не является обязательным, но Google автоматически переносит сценарии в V8.

Часть проблемы заключается в том, что Google автоматически переносит скрипты, которые проходят тесты на совместимость. И, очевидно, некоторое использование MailApp.sendEmail пройдет тест, но на самом деле потерпит неудачу при запуске скрипта.

https://developers.google.com/apps-script/guides/v8-runtime#automatic_migration_of_scripts_to_v8

Это потребовало от меня возврата / отказа примерно на 30 листах, использующих MailApp, просто чтобы убедиться, что они не дают ошибок - пользователям действительно нужны сценарии для Работа.

В справочных документах по миграции нет упоминаний о проблемах совместимости MailApp.sendEmail.

0 голосов
/ 10 марта 2020

Похоже, что многие триггеры не работают с миграцией V8 Runtime. У меня есть триггер onOpen (), и он не работает, когда лист открыт соавтором. Тем не менее, он работает хорошо, когда он открыт владельцем. Я еще не нашел решения ...

0 голосов
/ 25 февраля 2020

Переход на V8 не является обязательным. Если вы не готовы или у вас нет времени, чтобы сделать ваш код совместимым с ним, просто отключите его. Для этого нажмите «Выполнить»> «Отключить новую среду выполнения сценариев приложений на основе Chrome V8.

»
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...