Возможно ли для сценария GAS заблокировать Google Sheet, чтобы никто другой не мог изменить его, пока сценарий не будет выполнен - PullRequest
6 голосов
/ 02 октября 2019

Я знаком со службой блокировки , но это только для сценариев блокировки.

У меня есть код, который будет "обрабатывать" большой лист Google. Мой сценарий должен изменить порядок строк. Мне нужно / хочу сделать так, чтобы во время работы скрипта никто не мог изменить порядок. Тем не менее, мне все еще нужен другой скрипт для добавления строк.

Мы используем форму Google для приема нашей команды. Добавляет строки на лист. У меня есть почасовая работа, которая будет проходить через все строки / записи и "обрабатывать их". У меня есть столбец, в котором хранится последняя обработка записи / строки. Я хочу отсортировать по этому столбцу так, чтобы «самые старые» записи были сверху, а затем начать обработку сверху вниз. Если сценарий завершится неудачно или истечет время ожидания, следующая итерация начнется заново ...

Я знаю, что могу использовать getValues или getDisplayValues, чтобы получить массив, а затем записать массив обратно, но я беспокоюсь о том, чтопроизошло бы, если бы кто-то отсортировал строки, как это могло бы испортить вещи при обратной записи массива.

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

1 Ответ

4 голосов
/ 02 октября 2019

Способ полностью заблокировать электронную таблицу - изменить настройки общего доступа к электронной таблице. Удалите все редакторы или измените их на зрителей, после завершения сценария верните их обратно в качестве редакторов. В крайнем случае, используйте вторую учетную запись, чтобы стать владельцем критически важных файлов / электронных таблиц и использовать ее только для этой цели, чтобы вы могли заблокировать свою обычную учетную запись для внесения изменений в электронную таблицу.

ПРИМЕЧАНИЕ. Форма Google editResponseUrl может использоваться для редактирования связанной электронной таблицы.

Я сталкиваюсь с подобной ситуацией, но я выбрал другой подход, я использую столбец индекса / ключа (можно использовать метку временистолбец) и с помощью индекса / ключа сохранить каждую отредактированную строку в правильную позицию, а затем записать весь полученный массив за одну операцию (с помощью setValues()). В моем случае это просто, потому что мне нужны только значения, я не беспокоюсь о заметках, проверке данных, условном форматировании, комментариях и т. Д., И к моей электронной таблице не привязана форма Google.

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