Нужно ли использовать LockService getScriptLock, если в моем скрипте много пользователей? - PullRequest
1 голос
/ 23 марта 2020

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

function lockservice() {
  var lock = LockService.getScriptLock();
  lock.waitLock(30000);
  lock.releaseLock();
}

У меня есть другой скрипт для извлечения данных (отдельный скрипт), к которому также обращаются многие пользователи. Так что мне нужно getscriptlock и для этого?

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

1 Ответ

3 голосов
/ 23 марта 2020

Если вы записываете данные в электронную таблицу с:

sheet.appendRow(array);

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

sheet.getRange().setValues(array_2_D);

Тогда вам нужна служба блокировки.

Итак, appendRow() означает "atomi c", а setValues() - нет. Atomi c означает, что каждая операция выполняется полностью независимо друг от друга.

https://developers.google.com/apps-script/reference/spreadsheet/sheet?hl=en#appendRow (объект)

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

https://developers.google.com/apps-script/guides/services/quotas#current_limitations

...