Создание диалогового окна с подсказкой из функции onEdit не работает - PullRequest
0 голосов
/ 10 июля 2020

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

КОД:

    function onEdit(e){
  
  Logger.log("onEdit");
  var spreadSheet = e.source;
  var sheet = spreadSheet.getActiveSheet();
  var sheetName = sheet.getName();
  if(sheetName =='Sheet1' && e.range.columnStart == 23){
      Logger.log("should be running email prompt");
      emailPrompt(); 
   }
 }

function emailPrompt() {
  Logger.log("Reaching email prompt");
  var ui = SpreadsheetApp.getUi();
  
  Logger.log("ui");
  var result = ui.prompt(
      'Email Template',
      'Please edit the email:',
      ui.ButtonSet.OK_CANCEL);

      Logger.log("result");
      
      
  // Process the user's response.
  var button = result.getSelectedButton();
  var text = result.getResponseText();
  if (button == ui.Button.OK) {
    // User clicked "OK".
    //Insert Code to select email
    ui.alert('Your name is ' + text + '.');
  } else if (button == ui.Button.CANCEL) {
    // User clicked "Cancel".
    ui.alert('Email cancelled');
  } else if (button == ui.Button.CLOSE) {
    // User clicked X in the title bar.
    ui.alert('Email cancelled.');
  }
}

ЖУРНАЛЫ:

[20-07-10 15:21:09:472 CDT] onEdit
[20-07-10 15:21:11:198 CDT] should be running email prompt
[20-07-10 15:21:11:199 CDT] Reaching email prompt
[20-07-10 15:21:11:201 CDT] ui

РЕДАКТИРОВАТЬ: Настройка устанавливаемого триггера

введите описание изображения здесь

РЕДАКТИРОВАТЬ 2: Настройка устанавливаемого триггера сработала, так что большое спасибо! Единственная проблема, с которой я сейчас сталкиваюсь, заключается в том, что этот лист предназначен для компании, в которой я работаю, и они хотят владеть устанавливаемым триггером. Однако похоже, что подсказка отображается только для человека, которому принадлежит триггер. Если кто-то еще пытается отредактировать функцию и открыть приглашение. Появляется следующая ошибка: You do not have permission to call prompt at emailPrompt(onEdit:54) at onEdit_sendEmail(onEdit:42) –

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

1 Ответ

4 голосов
/ 10 июля 2020

Простые триггеры имеют несколько ограничений. Вместо этого используйте устанавливаемый триггер.

ПРИМЕЧАНИЕ. Не используйте зарезервированные имена функций (onOpen, onEdit, onSelectionChange, doPost, doGet, onInstall) для функций, которые будут вызываться устанавливаемыми триггерами, так как некоторые из этих функций могут вызываться дважды для одного и того же события, а другие могут вызываться разными событиями, которые могут сбивать с толку.

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