Сценарий Google не разрешает мне использовать функцию API, даже если он принимает всплывающее окно.

У меня есть базовая функция (я сохраняю только соответствующий код):

function list() {    
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  ss.getRange("Analyse!B1").setBackground("red");  
}

Я вызываю функцию в ячейке следующим образом: =list()

Ошибка: у вас нет прав на вызов списка функций


Я получил всплывающее окно выше с запросом на авторизацию, я принял его, если ничего не изменится, всегда ошибка:

введите здесь описание изображения


person azro    schedule 22.01.2018    source источник
comment
Пожалуйста, обновите вопрос, чтобы указать, как вы запускаете функцию. Вы вводите его в ячейку как пользовательскую функцию? (например, =list() ) или запустить его из меню и т. д.   -  person Cameron Roberts    schedule 23.01.2018
comment
@CameronRoberts вверх   -  person azro    schedule 23.01.2018


Ответы (2)


Вы не можете вызывать такие функции, как setBackground(), из пользовательской функции.

Когда вы запускаете код Apps Script как настраиваемую функцию, он запускается с ограниченным набором «безопасных» разрешений, поэтому вам не предлагается авторизовать сценарий.

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

См. мой ответ на этот аналогичный вопрос: Как изменить формат ячейки, в которой выполняется функция - Редактор скриптов Google Sheets

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

person Cameron Roberts    schedule 22.01.2018
comment
Если я буду запускать функцию с таймером каждую минуту, будет ли она работать? - person azro; 23.01.2018
comment
Я установил триггер как после модификации, и он работает, спасибо - person azro; 23.01.2018
comment
это хорошее решение, если вам не нужно распространять функцию среди других пользователей. Рад, что смог помочь! - person Cameron Roberts; 23.01.2018

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

Откройте Google Chrome, перейдите в меню и выберите «Новое окно в режиме инкогнито». Здесь откройте тот же лист Google и снова запустите скрипт.

person Amit Agarwal    schedule 23.01.2018