Доступ к «импортированному» документу, по-видимому, определяется настройками общего доступа для импортированного документа во время создания «основного» документа (а не шаблона).
Например:
- Шаблон A использует importrange () для включения данных из документа B
- Доступ к документу B установлен для всех, кроме пользователей Интернета, у которых есть эта ссылка.
- Шаблон A используется для создания документа C
Документ C не сможет импортировать содержимое из документа B. Вам придется вручную разрешить доступ.
Если перед тем, как разрешить доступ вручную, вы закроете документ C, измените общий доступ на B на «Все в Интернете, у кого есть эта ссылка, может просматривать», а затем снова откройте документ C, он все равно не сможет импортировать данные из B. Когда документ C был создан, у него не было доступа к документу B для импорта, поэтому он никогда не будет иметь доступа, если вы не предоставите доступ вручную.
С другой стороны:
- Шаблон A использует importrange () для включения данных из документа B
- Для доступа к документу B установлено значение "Все в Интернете, у кого есть эта ссылка, могут просматривать".
- Шаблон A используется для создания документа C
Теперь документ C может без проблем импортировать данные из документа B.
Если вы теперь измените общий доступ к документу B на «Ограниченный», документ C продолжит импортировать данные. Как и в первом случае, при создании документа C у него был доступ к документу B, поэтому он всегда будет иметь доступ.
Importrange () использует совместное использование, как и для импортированного документа во время создания основного документа.
На основе этого и кода, предоставленного Адрианом Моулом, я настроил рабочий процесс для создания моих документов из шаблонов следующим образом:
В скрипте Google Apps просмотрите список включенных идентификаторов документов и установите общий доступ:
var idList = { "doc-id-1", "doc-id-2", "doc-id-3", [...] };
for( id=0; id < idList.length; id++ ) {
DriveApp.getFileById(id).setSharing(DriveApp.Access.ANYONE, DriveApp.Permission.VIEW);
}
Создайте несколько документов из шаблона
Вернувшись в скрипт Google Apps, используйте аналогичный код, чтобы закрыть доступ ко всем импортированным документам:
var idList = { "doc-id-1", "doc-id-2", "doc-id-3", [...] };
for( id=0; id < idList.length; id++ ) {
DriveApp.getFileById(id).setSharing(DriveApp.Access.PRIVATE, DriveApp.Permission.EDIT);
}
Все документы, которые я создаю, могут правильно импортировать данные (каждый из них содержит несколько функций importrange ()), но когда я закончу, все импортированные документы снова будут полностью защищены.
Обратите внимание, что между шагами 1 и 3, пока документы создаются из шаблонов, все импортированные документы доступны для общего поиска и доступны в Интернете. Теоретически злоумышленник может создать importrange () в собственной электронной таблице для импорта ваших документов, и он продолжит иметь этот доступ после выполнения шага 3 и повторной блокировки ваших документов.
person
arkayneCoder
schedule
24.04.2021