Скрыть листы на основе пользователя и даты - PullRequest
1 голос
/ 03 апреля 2020

Я новичок в скрипте Google и мне нужна помощь. У меня есть переплет с 12 листами, по одному на каждый месяц года. Эта рабочая книга доступна для нескольких человек, и я хотел бы, чтобы назначенные пользователи только для чтения видели только прошедший месяц, текущий месяц и месяц, следующий за текущим месяцем. Но чтобы люди с правами на запись могли видеть и изменять всю книгу. Спасибо за помощь и извините за мой бедный Энгли sh!

1 Ответ

1 голос
/ 03 апреля 2020

Ответ:

К сожалению, это невозможно сделать.

Дополнительная информация:

Google Sheets делает иметь возможность скрывать / показывать разные листы, а также может изменять их при открытии листа. Однако в вашей ситуации есть две проблемы:

  1. Единственный способ запуска функций при открытии листа - это если пользователь, открывающий лист, имеет права на редактирование; Только для чтения недостаточно.
  2. Изменения применяются ко всему Листу, а не только к одному пользователю.

Давайте предположим следующий сценарий:

У вас есть сценарий, который проверяет статус разрешения пользователя, открывающего файл, и скрывает для него все листы. кроме прошлого, текущего и следующего месяца. Примерно так:

function permissionChanging() :
    user = userThatOpenedTheFile;

    if userThatOpenedTheFile.Permission = read-only:
        sheets.hide(all-sheets-except-past-current-and-following)
    else if userThatOpenedTheFile.Permission = write:
        sheets.show(all)

Теперь давайте рассмотрим двух пользователей:

  • Пользователь A, пользователь с доступом только для чтения к листу.
  • Пользователь B , пользователь с правами записи.

Теперь, если пользователь A открывает файл, так как у него есть доступ только для чтения, функция не будет запускаться - , как описано в документации по сценарию. .

Предположим теперь для мысленного эксперимента, что пользователь A смог запустить функцию:

Когда пользователь A откроет лист, функция будет работать, и все листы будут скрыты, за исключением текущего, предыдущего и следующего месяцев. Они могут с удовольствием взглянуть на лист в этой текущей форме.

Теперь пользователь B открывает форму, до того, как пользователь A закрыл ее . Сценарий запускается снова - теперь он скрывает все листы. Поскольку электронная таблица хранится в облаке, изменения применяются ко всем читателям листа - так что теперь, когда у пользователя A уже открыт лист, Измененные распространяются на их вид, и теперь они могут видеть все Листы.

Я знаю, что это, как правило, плохие новости, но я надеюсь, что это полезно для вас!

Ссылки:

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