@Nigle

Как сменить владельца файла google spreadsheet используя google apps script?

Добрый день!
Есть файл, который лежит у меня на гугл диске и я являюсь его владельцем. Файл доступен для редактирования всем по ссылке (однако некоторые листы/ячейки в нем защищены от редактирования). Мне необходимо реализовать скрипт, в котором по нажатию кнопки (условно кнопка "Начать") любым пользователем (не мной, в т.ч. неавторизованном в гугле) создавалась копия файла на моем диске и чтобы ВЛАДЕЛЕЦ этой копии был Я с теми же настройками общего доступа что и исходный файл.
/**
* Open the url in a new tab
* @param {string} url
*/
function myFunction() {
var ss = SpreadsheetApp.getActiveSpreadsheet();  
var a1 = ss.getRange('D4').getValue();
var dt = Utilities.formatDate(new Date(), 'Russia/Moscow + 0300','MMMM dd yyyy');
let urlCell = ss.getRange("b12");
var targetFolder = DriveApp.getFolderById('1Q7gpZ2_dWJNInt43V-0MIu599qg7CMGV');
let newDoc = DriveApp.getFileById('1M5NKzgDPhWS0P181e1yO-SSX_9He4_OjhlD9ASWAPhE').makeCopy(a1 + ' ' + dt,targetFolder);
var newss = newDoc.getUrl();
Logger.log(newDoc.getUrl());
urlCell.setValue(newDoc.getUrl())
return newss;
}

Вот так это у меня реализовано, но пытаясь запустить скрипт из-под другой учетной записи: он у меня не срабатывает корректно: файл создается, но владелец файла - другой аккаунт
Как это можно поправить?
  • Вопрос задан
  • 88 просмотров
Пригласить эксперта
Ответы на вопрос 2
BasiC2k
@BasiC2k
.NET developer (open to job offers)
Создать SpreadSheet и сменить его владельца на любого другого пользователя - нельзя.
Согласно списка методов и свойств Spreadsheet предусмотрена функция только для получения Owner-а: getOwner()
Ответ написан
oshliaer
@oshliaer Куратор тега Google Apps Script
Google Products Expert
Чтобы сменить Владельца файла, можно использовать метод setOwner(user).

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

Если этот файл вам недоступен, тогда анонимные пользователи не смогу помочь вам в этой задаче. Тогда они должны отправлять id файла в ваше приложение, которое опубликовано для всех у кого есть аккаунт Гугл от их имени, и уже тогда вам придется использовать setOwner(user) из начала этого ответа.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы