Не разрешено выполнять sendemail () из пользовательской функции, но в редакторе скрипта OK OK

StackOverflow https://stackoverflow.com/questions/19840894

Вопрос

Я пытался найти способ отправить отдельную строку данных по конкретному адресу электронной почты в электронной таблице «Live/Running», которую я использую в своем домене, чтобы отслеживать драйверы грузовиков и их номера. Мне удалось собрать этот небольшой код, используя редактор скриптов Google Apps, доступный на листах:

function sendEmail()
{
   var sheet = SpreadsheetApp.getActiveSheet();
   var activeRow = sheet.getActiveCell().getRow();
   var cellID = "H" + activeRow;    
   var dataRange = sheet.getRange(activeRow, 1, 1, 6);
   var EMAIL_SENT = "EMAIL_SENT";
   var data = dataRange.getValues();
   Logger.log(data[0][0]);

   var emailAddress = usercellnum@carrier.net;
   var message = data;
   var subject = "CG-PU#";
   var emailSent = sheet.getRange(cellID).getValue();

   if (emailSent != "EMAIL_SENT")
   {
     MailApp.sendEmail(emailAddress, subject, message);
     var cell = sheet.getRange(cellID);
     cell.setValue(EMAIL_SENT);
   }
  }
SpreadsheetApp.flush();  
}

В любом случае я могу назвать функцию из ячейки в моей электронной таблице, как =sendEmail() и он должен отправить информацию только из активной строки, а затем помечать эту строку как EMAIL_SENT Так что я не случайно этого не делаю.

Сценарий работает идеально, если я запускаю его из редактора внутренних сценариев, и жесткий код по адресу электронной почты, но если я попытаюсь запустить его из самого листа, я получаю сообщение:

Ошибка: у вас нет разрешения на вызов SendEmail (строка 19, файл "cps_sendemail.gs").

Любая помощь с этим очень ценится! Это поможет удержать моего пользователя отбежать к MS Excel и Outlook. Когда я получаю эту часть, работающую, мне бы очень понравилась, если бы я мог отобразить список адресов, из которых пользователь может выбрать, или какой -то другой способ удержать пользователя от необходимости запоминать и ввести адрес драйверов и Перевозчик, но я бы хотел, чтобы это было так много, как и ожидалось.

Сценарий будет/должен быть разрешен только в моем домене Google с моими пользователями, и в первый раз, когда я его выполнил - я был уверен, что прошел процесс авторизации, но не понял эту часть вещей.

В настоящее время они используют MS Excel/Outlook и копируют и вставляют строку в электронное письмо, которое они могут использовать свои контакты для выбора. Если я не могу получить функцию для использования контактов с Googles, я подумал о создании листа водителей с функцией поиска вверх или чем -то !

Нет правильного решения

Другие советы

Читать Разрешения и пользовательские функции. Анкет Поскольку пользовательские функции (сценарии, вызванные функциями электронных таблиц), открыты для любого пользователя электронной таблицы, им не разрешено использовать какую -либо услугу, которая требует аутентификации. Вот почему вы не можете отправить почту из одного.

Это отличается от процесса разрешения сценария для доступа к вашим услугам. Это делает сообщение об ошибке запутанным, но будьте уверены, что это было так, как вы ссылались на сценарий.

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

Я рекомендую вам создать элемент меню для этой операции. (См. Пример кода, предоставленного в редакторе, если вы создадите новый сценарий электронной таблицы.) Рабочий процесс будет заключаться в перемещении курсора в строку, который вы хотите обработать, а затем использовать меню, чтобы «сделать его таким», что вызвало бы ваш сценарий.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top