Совместное использование документа на Диске без уведомления пользователя с помощью скрипта Google Apps

Я создаю рабочий процесс в Apps Script, в котором документ создается из шаблона и передается на утверждение различным пользователям. Сценарий отправляет настроенное электронное письмо, уведомляющее пользователя о том, что документ требует их утверждения, но они также получают второе электронное письмо на каждом этапе процесса от пользователя, на Диске которого хранится документ, с сообщением «Пользователь поделился с вами документом». Есть ли способ отключить эти предупреждения? Когда вы делитесь документом вручную со своего Диска, есть опция флажка, которая позволяет вам выбрать, будет ли пользователь получать уведомление. Однако я не могу найти способ отключить это уведомление с помощью скрипта приложений.

Я использую doc.addEditors(users), чтобы поделиться документом.

Огромное спасибо


person StuWatson    schedule 17.01.2014    source источник


Ответы (3)


Если вы работаете с Документами Google или Таблицами Google, есть простое решение. Вы можете использовать DocumentApp или SpreadSheetApp, чтобы делиться своими документами или таблицами без уведомления по электронной почте:

DocumentApp

var doc = DocumentApp.openById('124144')
doc.addEditor('[email protected]').addViewer('[email protected]')

SpreadSheetApp

var spreadSheet = SpreadsheetApp.openById('124144')
spreadSheet.addEditor('[email protected]').addViewer('[email protected]')

Однако, если вы работаете с документами, которые не являются Документами или Таблицами, вы должны предоставить общий доступ, а затем использовать DriveApp, и будет отправлено уведомление по электронной почте.

person maeq    schedule 26.03.2015
comment
Отличное решение. К сожалению, невозможно добавить комментатора через DocumentApp или _2 _... только через DriveApp. Я думаю, что нет способа добавить комментатора к чему-либо на Диске, не отправив ему электронное письмо (за исключением расширенной службы Диска, конечно). - person xd1936; 08.08.2018
comment
Это решение больше не работает, и при совместном использовании через DocumentApp или SpreadsheetApp теперь отправляются электронные письма. - person xd1936; 12.03.2021

Другой вариант - использовать расширенную службу Drive (которую вы должны включить в меню «Ресурсы» в редакторе скриптов).

Используемый код должен быть

Drive.Permissions.insert(
   {
     'role': 'writer',
     'type': 'user',
     'value': '[email protected]'
   },
   fileId,
   {
     'sendNotificationEmails': 'false'
   });
person Rodrigo Chiong    schedule 14.08.2014
comment
Есть идеи, что должно быть fileId? Я могу найти файл, если попробую DriveApp.getFileById("fileID"), но если я попробую приведенный выше код, он говорит File not found. - person IMTheNachoMan; 17.06.2019
comment
fileId - это 44 символа, которые появляются как часть URL-адреса при открытии файла, но я не думаю, что функция Drive.Permissions.insert все еще доступна - person alejandro; 02.03.2020
comment
@alejandro Drive.Permissions.insert() по-прежнему доступен, если вы включите Advanced Drive Service. Это не часть стандартной DriveApp службы. - person Rodrigo Chiong; 03.03.2020
comment
@IMTheNachoMan сначала убедитесь, что у вас есть действительная строка fileId. Если у вас все еще есть проблемы, вы можете попробовать сначала получить файл var file = DriveApp.getFileById(fileId), а затем вставить разрешение, заменив fileId в примере кода на file.getId(). - person Rodrigo Chiong; 03.03.2020
comment
Это работает очень хорошо, спасибо. Я использую этот код для обмена папками, заполненными PDF-файлами на диске. Ключевое слово - это Диск;) - person Michael; 09.03.2020
comment
@Michael Я рад, что это помогло;) - person Rodrigo Chiong; 10.03.2020

На данный момент это невозможно. Дополнительную информацию по этой теме можно найти здесь: https://code.google.com/p/google-apps-script-issues/issues/detail?id=2829

Обходной путь, предложенный в комментариях к вышеуказанной проблеме, заключается в использовании вместо этого DocsList:

DocsList, SpreadsheetApp и DocumentApp имеют методы addEditor и addViewer, которые не приводят к отправке уведомлений по электронной почте.

person TomTasche    schedule 24.02.2014