Копировать электронную таблицу по триггеру - onOpen - PullRequest
0 голосов
/ 22 октября 2018

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

  spread = SpreadsheetApp.getActive()

, но он также не работал

function onOpen(e){
 var spread = e.source
 var dest = DriveApp.getRootFolder();  
 var name = "NEW NEW spreadsheet test"
 var newfile = DriveApp.getFileById(spread.getId()).makeCopy(name,dest);
 Browser.msgBox('File will appear on your Drive in a moment');
 SpreadsheetApp.setActiveSpreadsheet(newfile)
}

Пожалуйста, я ищу предложения, что яотсутствует или неправильно истолковывает.Спасибо!

1 Ответ

0 голосов
/ 22 октября 2018

try:

function onOpenTrigger(){
 var spread = SpreadsheetApp.getActiveSpreadsheet();
 var dest = DriveApp.getRootFolder();  
 var name = "NEW_NEW_spreadsheet_test"
 var newfile = DriveApp.getFileById(spread.getId()).makeCopy(name,dest);
 var newSpreadsheet = SpreadsheetApp.open(newfile);
 Browser.msgBox('File will appear on your Drive in a moment');
 SpreadsheetApp.setActiveSpreadsheet(newSpreadsheet)
}

Я заставил его работать, используя следующие шаги:

  1. переименуйте onOpen под другим именем, здесь onTriggerOpen
  2. вручную создайтетриггер, который запускается при открытии документа
  3. , сначала запустите функцию из IDE Google App, чтобы разрешить действия для пользователя

onOpen, для которого установлена ​​авторизация LIMITED, поэтому неуверен, что это будет работать для других пользователей, которые не выполнили onOpenTrigger из IDE.

Также вы передаете объект File вместо spreadsheet объекта внутри setActiveSpreadsheet(spreadsheet), поэтому одно решениеиспользовать SpreadsheetApp.open(file) первый

ССЫЛКИ

Open ()

setActiveSpreadsheet ()

Триггеры

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