Проблема:
Вы хотите, чтобы ваши сотрудники могли вставлять файлы на ваш Диск, даже не имея разрешения на просмотр вашего Диска. Это невозможно.
Обходной путь:
Как сказал Купер, хороший способ обойти эту проблему - развернуть ваше приложение как веб-приложение и, при его развертывании, установить « Запустите приложение как"для вас. Таким образом, даже если к этому веб-приложению обращаются другие пользователи, веб-приложение выполняется от имени вас и может получать доступ к тем же ресурсам, что и вы.
Я думаю, что самый простой способ сделать это - присвоить вашей функции имя doGet
. Эта специально названная функция запускается каждый раз, когда кто-то делает GET
запрос к URL-адресу веб-приложения (то есть каждый раз, когда кто-то обращается к этому URL-адресу). Таким образом, каждый раз, когда кто-то обращается к этому URL-адресу, копия файла создается в двух указанных папках.
Теперь я не знаю, как извлекается идентификатор папки сотрудника, в зависимости от того, какой пользователь запускает сценарий, но в самой функции вы можете объявить объект, содержащий пары ключ-значение, с разными почтовыми сообщениями сотрудников. и соответствующие идентификаторы папок.
Наконец, вы можете вернуть HtmlOutput в конце этой функции, чтобы проинформировать пользователей об успешном завершении процесса (вместо того, чтобы показывать ошибку, не возвращающую ничего ).
Это может быть что-то вроде этого:
Пример кода:
function doGet() {
var ss = SpreadsheetApp.getActive();
var empName = Session.getActiveUser();
var employeeFolders = { // Employee emails and folder ID's
emailEmployee1: "folder-id-1",
emailEmployee2: "folder-id-2",
emailEmployee3: "folder-id-3",
//...
}
var empFolderId = employeeFolders[empName];
var destFolderEmp = DriveApp.getFolderById(empFolderId);
var destFolderMgr = DriveApp.getFolderById(my folder id is here);
var timeStamp = Utilities.formatDate(new Date(), ss.getSpreadsheetTimeZone(), 'MM-dd-yyyy');
var newName = ss.getName() + " " + empName + " " + timeStamp;
DriveApp.getFileById(ss.getId()).makeCopy(newName,destFolderEmp)
DriveApp.getFileById(ss.getId()).makeCopy(newName,destFolderMgr)
return HtmlService.createHtmlOutput("Copy made!");
}
После того, как вы скопировали этот код в свой проект, вы можете развернуть скрипт как веб app, если вы выполните эти шаги .
Примечание:
- У вас должен быть доступ к папкам сотрудников, чтобы это работало.
- Это - это самый простой способ сделать это, но можно добавить много деталей (обслуживание HTML страниц и предоставление пользователям возможности нажимать кнопку для запуска скрипта и т. д. c.). Я предлагаю вам прочитать ссылку на веб-приложения, которую я включил в ссылку, если вы хотите продолжить исследование.
Ссылка: