Есть ли способ заставить окно ввода пользовательского интерфейса появляться с заданными интервалами независимо от страницы, на которой вы используете Apps Scipt?

#google-apps-script #google-sheets

#google-apps-script #google-таблицы

Вопрос:

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

 function myFunction() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var timer = Browser.inputBox('New Data', 'How many minutes?', Browser.Buttons.OK_CANCEL);
  ss.appendRow([timer]);
}
 

Есть ли способ заставить окно электронной таблицы быть активным при выключении таймера или каким-либо образом предупредить пользователя о вводе данных, если он перешел со страницы? ТИА!!!

Комментарии:

1. Вы смотрели на Spreadsheet.toast() ?

2. Привет ! К сожалению, вы не можете запустить Browser.InputBox или пользовательский интерфейс с помощью триггеров, основанных на времени . Почему вы хотите запустить поле ввода несколько раз через определенный промежуток времени? Сколько раз вам понадобится это поле ввода для запуска?

3. @Cooper это выглядит действительно аккуратно, но, похоже, не позволяет вводить данные.

4. @MateoRandwolf Изначально я хотел бы собирать данные о том, какой задачей я занимаюсь, когда срабатывает оповещение (через регулярные промежутки времени в течение определенного периода времени … скажем, каждые 5 минут в течение 30 минут, например). Я поведенческий аналитик по профессии, и я работаю над идеями, которые помогут с поведением при выполнении заданий для дистанционных учащихся.

5. Вы собираетесь, чтобы кто-то сидел там и смотрел электронную таблицу? Просто жду этого сообщения. Я думаю, я бы предпочел отправить электронное письмо или текстовое сообщение на их телефон и предоставить им веб-приложение для ввода данных.

Ответ №1:

Обходной путь

Из предоставленной вами информации и ваших требований (всплывающее диалоговое окно не только при работе с электронной таблицей, но и на любой странице браузера) Я думаю, что лучшим вариантом было бы создать или использовать расширение Chrome. Если вы хотите передать данные, полученные в этом расширении, в определенную электронную таблицу для регистрации активности пользователя, тогда вы хотите использовать Sheets API.

Проблемы с использованием simply Apps Script для этого сценария заключаются в следующем:

  • Триггеры, основанные на времени, не могут запускать элемент пользовательского интерфейса, такой как Browser.InputBox() или getUi
  • Диалоговое окно пользовательского интерфейса в электронной таблице останавливает выполнение скрипта до тех пор, пока он не будет отклонен. Это приведет к тому, что если ваш пользователь забудет добавить информацию и закрыть диалоговое окно, скрипт остановится, пропуская также следующие повороты.
  • Пользователю потребуется открыть вкладку «Электронная таблица», поскольку скрипт управляет только тем, что происходит в электронной таблице, а не в браузере. Поскольку вы хотите отслеживать поведение независимо от того, на какой вкладке находится пользователь, я считаю, что для пользователя было бы лучше просто иметь расширение Chrome, которое выполняет эту работу.

Комментарии:

1. Спасибо! Я все еще работаю над тем, какие инструменты лучше всего подходят для каждой ситуации, и ваш ответ имеет большой смысл. Похоже, расширения Chrome используют те же инструменты, которые я изучал (HTML, CSS, JS), так что это идеально. Еще раз спасибо!