Разрешения пользовательских функций

Я пытаюсь написать пользовательскую функцию для Google Таблиц, но сталкиваюсь с ошибками разрешений слева и справа. Просто для начала я ввел это в верхнюю левую ячейку: "=testFunction()". В функции я попытался выделить и выбрать строку на основе пользователя и столкнулся со следующими проблемами:

  1. У меня нет разрешения на вызов метода Session.getActiveUser(), поэтому я ничего не могу сделать в зависимости от доступа пользователя к документу. Кроме того, функция getUrl не возвращает фактический URL-адрес, поэтому добавление в конец чего-то вроде «#Jeff» не сработает. Примечание. В конце концов мне удалось обойти это, потому что, к моему большому удивлению, функция Spreadsheet.getViewers работает.
  2. У меня нет разрешения на запуск функции Spreadsheet.setActiveSelection(), поэтому я не могу выбрать строку.
  3. У меня нет разрешения на изменение фона для ячейки B, если я запускаю функцию из ячейки A. Это означает, что мне нужно поместить мою неработающую функцию выделения в каждую ячейку, цвет которой я хочу изменить.

Становится неприятно искать, как что-то сделать, тестировать это и наблюдать, как ошибка разрешения появляется три из четырех раз.

Учитывая, что я являюсь владельцем этого документа, есть ли способ изменить то, на что у меня есть разрешение?

Если нет, есть ли какая-либо документация для того, какие функции я могу запустить?


person user688260    schedule 08.04.2013    source источник
comment
Связанный: stackoverflow.com/questions/40009418/   -  person Rubén    schedule 13.10.2016


Ответы (2)


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

person JuricaJaman    schedule 16.08.2013

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

Пример: я написал эту функцию сценария, связанную с моим листом.

function getTheUser() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheets()[0];
  sheet.getRange('a1').setValue(Session.getActiveUser());
}

если я положу это в ячейку

=getTheUser()

ячейка помечается "ошибкой: у вас нет разрешения на вызов getActiveUser (строка 9, файл "Код")"

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

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

person Mike D    schedule 09.02.2014