Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Проверьте таблицу Google перед ее закрытием или переходом на другую вкладку

Автор вопроса: Alpesh JainОтветов: 2

У меня есть таблица Google, где пользователь может изменить определенные значения, а затем нажать кнопку. После нажатия кнопки эти записи перемещаются на другие листы в зависимости от выбора пользователя с помощью скрипта Google Apps.

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

Спасибо

  • Судите сами. Вот триггеры, доступные вам. Cooper 01.09.2017
  • Нет onClose события. Единственное событие, которое может быть полезным, - это onEdit, но я не знаю, как вы могли бы запросить пользователя, не выполняя его постоянно. Brian 02.09.2017

google-sheetsgoogle-apps-scriptgoogle-sheets-api

Ответы

Ответ 1 · Teyam

Вы можете попробовать добавить диалоговые окна запросов.

Чтобы оценить ответ пользователя, зафиксируйте возвращаемое значение для prompt(), затем вызовите _ 2_, чтобы получить ввод пользователя, и сравнить возвращаемое значение для _ 3_ в _4 _ а> перечисление.

Вот пример кода:

function onOpen() {
  SpreadsheetApp.getUi() // Or DocumentApp or FormApp.
      .createMenu('Custom Menu')
      .addItem('Show prompt', 'showPrompt')
      .addToUi();
}

function showPrompt() {
  var ui = SpreadsheetApp.getUi(); // Same variations.

  var result = ui.prompt(
      'Let\'s get to know each other!',
      'Please enter your name:',
      ui.ButtonSet.OK_CANCEL);

  // Process the user's response.
  var button = result.getSelectedButton();
  var text = result.getResponseText();
  if (button == ui.Button.OK) {
    // User clicked "OK".
    ui.alert('Your name is ' + text + '.');
  } else if (button == ui.Button.CANCEL) {
    // User clicked "Cancel".
    ui.alert('I didn\'t get your name.');
  } else if (button == ui.Button.CLOSE) {
    // User clicked X in the title bar.
    ui.alert('You closed the dialog.');
  }
}

Ответ 2 · рейтинг -1 · Riyafa Abdul Hameed

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

var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var sheetName = sheet.getName()

Если пользователь находится на другом листе, вы можете проверить свой лист.

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы