1

Проблема: При запуске сценария, Google говорит мне, « У вас нет разрешения на вызов openById»ГАЗ «У вас нет разрешения на вызов openById»

Я переписал сценарий из другой одной из моих таблиц Google и изменил ссылку на ячейку переменной target_ssKey и создал именованные диапазоны нулевого размера как в исходных, так и в целевых таблицах.

ГАЗ документация ничего не говорит о причинах, почему он не может работать:

https://developers.google.com/apps-script/reference/spreadsheet/spreadsheet-app#openById%28String%29

Другая документация ГАЗ говорит, что должен работу для меня, потому что я призываю его из пользовательского меню:

https://developers.google.com/apps-script/guides/sheets/functions#using_apps_script_services

Второе звено выше говорит:

Если ваша пользовательская функция выдает сообщение об ошибке У вас нет разрешения на вызов службы X., услуга требует авторизации пользователя и, следовательно, не может использоваться в пользовательской функции.

Чтобы использовать службу, отличную от перечисленных выше, создайте пользовательское меню , которое запускает функцию сценария приложений вместо написания пользовательской функции . Функция, которая запускается из меню, запрашивает у пользователя для авторизации в случае необходимости и, следовательно, может использовать все приложения Сценарий.

Я попытался включить функцию в проект «Пользовательские функции», а затем в проект «Надстройка», но все же получил то же сообщение об ошибке.

Любые идеи о том, что я делаю неправильно и как это сделать?

Вот мой точный код:

function exportData_SStoSS() { 
    // Get the source data. 
    var source_ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var data = source_ss.getRangeByName("exportData").getValues(); 

    // Identify the target. 
    var controls_sh = source_ss.getSheetByName("Controls"); 
    var target_ssKey = controls_sh.getRange('C2').getValue(); 
    var target_ss = SpreadsheetApp.openById(target_ssKey); 

    // Paste the data to the target. 
    target_ss.getRangeByName("importData").setValues(data); 
}; 

ответ

1

Nevermind, я понял это!

Метод openByID может быть вызван из «Пустого проекта», но не «Пользовательские функции в листах» или «Проект дополнений Google Таблиц».

Я думал, что проект «Пустой» создаст проект, который не был связан с моей таблицей, но я ошибся. Проект Blank подключен к моей электронной таблице. Другие типы проектов, которые я пытался использовать, по-видимому, являются версиями сценариев с ограниченным охватом, не способными выполнять некоторые методы GAS.

+0

Есть ли официальный источник этой информации? –

1

Я нашел это официальное примечание, которое, я считаю, проясняет, что вызвало проблему.

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

Тот же сценарий может однако открыть другие электронные таблицы из кнопки меню или аналогичного.

Ссылка: Documentation at developers.google.com

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

  • Нет связанных вопросов^_^