2016-09-27 4 views
0

Если в функции onOpen Google Doc я создаю объект электронной таблицы, открывая электронную таблицу по id, как передать этот объект другим функциям, если я использую систему меню? (более подробное объяснение ниже)Ошибка разрешения скрипта с открытым письмом Google Script

У меня есть сценарий docs для Google, который будет делать снимок документа в определенное время, а затем экспортировать его в .docx и обновить таблицу с помощью URL-документа моментального снимка. Это инициируется опции меню следующим образом:

function onOpen(e) { 
DocumentApp.getUi().createMenu('Senate Secretary Menu') 
    .addItem('Snapshot', 'snapshot') 
    .addToUi(); 
} 

Что вызывает функцию моментального снимка()

function snapshot() { 
//open the spreadsheet using id 
var ss=SpreadsheetApp.openById('spreadsheet_id'); 

Это генерирует ошибку you do not have permission to call openbyid()

Я понимаю, что Google скрипт запрещает openbyid() из вызывается в пользовательских функциях (которые я интерпретировал как функции в электронной таблице, но whatevs). Если я изменил функцию onOpen, чтобы включить вызов OpenById(), он будет работать.

function onOpen(e) { 
DocumentApp.getUi().createMenu('Senate Secretary Menu') 
    .addItem('Snapshot', 'snapshot') 
    .addToUi(); 
var ss=SpreadsheetApp.openById('spreadsheet_id'); 
} 

Мой вопрос в том, как передать объект файла из функции onOpen в функцию моментального снимка?

+0

Чтобы уточнить, используете ли вы фактический идентификатор электронной таблицы (длинную последовательность букв и цифр) или строку '' spreadsheet_id''? – Brady

+0

Это на самом деле длинная строка чисел. Но я нашел ошибку, размещенную ниже. – rwreed

ответ

0

Для всех, кто может также иметь эту проблему. Я взял шаблон меню из Google Quickstart, но он имеет флаг @OnlyCurrentDoc в блоке комментариев заголовка, который я пропустил. Взял это, и моя проблема была решена.

Смежные вопросы