Улучшить скорость отклика Скрипт листа Google

Я написал форму для входа пользователя. Я использовал код, чтобы провести их через форму. Например, после входа в ячейку A4 он переходит к D4, после D4 он переходит к A5 и т. д. Несмотря на то, что время выполнения (как показано в расшифровке выполнения) невелико (в большинстве случаев около 0,1 секунды), лист Google время отклика обычно составляет около 1 секунды. Он чувствует себя довольно медленным. Есть ли способ улучшить реакцию листа Google на это действие? Расшифровка казни


person Tam Le    schedule 27.05.2019    source источник
comment
Если вы можете уменьшить количество обращений к листу (т. е. эти Range.getA1Notation()s), это немного поможет. Кроме того, пожалуйста, не публикуйте изображения кода/ошибок и постарайтесь включить образец соответствующего кода, чтобы люди могут лучше понять, какие у вас проблемы.   -  person sinaraheneba    schedule 27.05.2019
comment
@Altigraph Как видите, 4 операция Range.getA1Noation() стоит менее 1 миллисекунды. При этом время отклика составляет около 1 секунды. Это, вероятно, должно быть довольно низким в списке приоритетов оптимизации. Моя проблема заключается в разнице между временем выполнения скрипта и временем отклика, а не в самом коде.   -  person Tam Le    schedule 27.05.2019
comment
Я комментирую улучшение того, что можно улучшить в коде на стороне сервера, потому что это и есть скрипт Google Apps. Если вам нужен более отзывчивый клиент, вам нужно будет использовать что-то еще вместо/в дополнение к GAS; например боковая панель, как показано ниже, другой пользовательский интерфейс на стороне клиента, вызывающий ваш скрипт приложений как веб-приложение и т. д.   -  person sinaraheneba    schedule 27.05.2019


Ответы (2)


Помимо времени, необходимого для выполнения метода, вы должны учитывать «время транспортировки» (связь между серверами Google и пользовательским устройством), время пересчета электронной таблицы и время обновления пользовательского интерфейса.

Чтобы повысить шансы пользователей формы получить лучший опыт,

  • избегать или сокращать использование формул
  • избегайте или сокращайте использование изменчивых функций, таких как NOW()
  • избегайте или сокращайте использование открытых ссылок, таких как A:A
  • уменьшить длину цепочек расчетных зависимостей
  • и т.п.

Также попросите пользователей формы

  • удалить все расширения веб-браузера
  • закройте все остальные вкладки веб-браузера
  • закройте все остальные локальные приложения
  • использовать очень быстрое интернет-соединение
  • и т.п.

дальнейшее чтение

person Rubén    schedule 27.05.2019
comment
Есть ли способ измерить время транспортировки, время пересчета электронной таблицы и время обновления пользовательского интерфейса? - person Tam Le; 27.05.2019
comment
Брюс Макферсон (ramblings.mcpher.com) опубликовал на своем сайте сообщение с кодом об этом (возможно, в этой статье нет не охватить все, но это действительно отличное начало). - person Rubén; 27.05.2019
comment
Отличный ресурс, жаль, что я знал это намного раньше. Однако не удалось найти часть, на которую вы указываете. - person Tam Le; 27.05.2019

Использование Apps Script для перемещения пользователя по электронной таблице, вероятно, не то, что вам будет удобно.

Вместо этого ознакомьтесь с руководством по диалоговым окнам и боковым панелям и подумайте, стоит ли создавать форму в HTML/Javascript было бы более подходящим решением (при условии, что простое создание формы Google не является).

person sinaraheneba    schedule 27.05.2019
comment
Я создаю форму, чтобы пользователь вводил данные с изображения. После того, как они закончили с изображением, форма очищается, нужно обработать следующее изображение. Возможно ли это с помощью формы Google? - person Tam Le; 27.05.2019
comment
Чтобы убедиться, что я понимаю, что вы хотите: изображение загружается на страницу, пользователь вводит некоторые данные из содержимого этого изображения, отправляет свою запись, форма очищается, загружается новое изображение, и пользователь повторяет этот процесс. ? Я не очень много работал с Google Forms, чтобы узнать, возможно ли это с их платформой, но это абсолютно возможно с помощью боковой панели (если вы хотите, чтобы они использовали ее, находясь на лист) или с помощью скрипта приложений Google, развернутого как веб-приложение. - person sinaraheneba; 27.05.2019
comment
например, простая HTML-страница с вашим изображением и формой для отправки. Также может предварительно получить следующее изображение, чтобы оно было сразу после отправки, без необходимости ждать ответа от сервера. - person sinaraheneba; 27.05.2019
comment
Предварительная выборка, о которой вы говорите, находится в скрипте/листе Google или HTML-странице? - person Tam Le; 27.05.2019
comment
потенциально оба, в зависимости от того, как вы его создаете и откуда вы получаете эти образы (например, Drive через DriveApp или какой-либо другой сервис). Например, загрузка двух изображений при загрузке страницы, отображение первого. Когда первое отправлено, клиент переключается на второе изображение и начинает собирать третье, или, как вы считаете, это работает лучше всего (загрузка большего или меньшего количества изображений заранее, работа в пакетном режиме и т. д.). - person sinaraheneba; 27.05.2019
comment
Я получаю изображения от .insertImage('a_Google_drive_link',1,1). Как загрузить 2 изображения сразу? - person Tam Le; 27.05.2019
comment
Опять же, скрипт Google Apps запускается в облаке, а не на вашем клиенте. Пытаться сделать так, чтобы ваш клиент работал более плавно, изменяя код скрипта приложения, все равно, что пытаться улучшить воздушное движение в Хитроу, делая более быстрые самолеты. Я говорю о создании вашей формы в HTML, а не об использовании электронной таблицы. - person sinaraheneba; 27.05.2019
comment
потенциально, оба, в зависимости от того, как вы его создаете и откуда вы получаете эти образы (например, Drive через DriveApp или какой-либо другой сервис), я спросил об этом из-за этих слов. - person Tam Le; 27.05.2019
comment
да. Если вы загружаете изображения из другого места, вам может понадобиться написать этот код только на стороне клиента. Если вы извлекаете изображения с диска, вам нужно будет написать код скрипта приложений, чтобы отправить его клиенту. - person sinaraheneba; 27.05.2019