Убедитесь, что кнопка скрипта листов Google запускается только один раз - PullRequest
0 голосов
/ 04 февраля 2020

У меня есть кнопка на листах, аналогичная кнопке, описанной в документации .

Проблема в том, что я хочу, чтобы пользователи не нажимали ее несколько раз одновременно (поскольку скрипт отправляет сообщения).

Я заметил, что кнопка рисования не передает событие в функцию. Есть ли способ сделать это? Я искал, но не нашел ответа, любые предложения приветствуются.

Ответы [ 2 ]

2 голосов
/ 04 февраля 2020

Да, это возможно с Свойствами скрипта

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

Пример:

function onlyOnce(){
  var scriptProperties = PropertiesService.getScriptProperties();
  var myProperty = scriptProperties.getProperty('already_called');
  if (!myProperty){
    showMessageBox();
    scriptProperties.setProperty('already_called', 'YES');
  }
}
function showMessageBox() {
  Browser.msgBox('You clicked it!');
}
1 голос
/ 04 февраля 2020

Кратковременный Debouncer

Я думаю, я бы попробовал это так, чтобы он автоматически сбрасывался через короткое время.

function onlyOnceInAShortTime() {
  var cache = CacheService..getUserCache();
  var cached = cache.get("already_called");
  if(cached=="YES") {
    Browswer.msgBox('You click it');
    return;
  }
  cache.put('already_called', 'YES' , 20);//remains for twenty seconds
}

Класс кеша

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