Вызов пользовательской функции прямо из Google Sheets - PullRequest
2 голосов
/ 23 мая 2019

Как я могу решить проблемы с правами доступа с помощью пользовательских функций (вызов из ячеек листа Google)?

Like

  • "У вас нет разрешения на вызов setDataValidation"
  • " У вас нет разрешения на вызов setValue"

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

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

Затем я поделюсь этим листом с моей организацией (GSuite), чтобы они могли иметь доступ кданные и пользовательские функции.

У меня проблемы, я не нашел никакого решения.

Пожалуйста, предложите возможные способы решения этой проблемы.

* Я легко могу вызвать эту функцию из Google Apps Scriptнапрямую (из прогона), но не из листов.

Пример кода, который выдает ошибку «У вас нет разрешения на вызов setDataValidation»

function getNamedRanges(type,cell){  // parms ex. ("Cars" ,"D1")
  Logger.log(type);
    var namedRanges = SpreadsheetApp.getActive().getNamedRanges();
    for (var i = 0; i < namedRanges.length; i++) {
      if(namedRanges[i].getName()==type){
        var cell = SpreadsheetApp.getActive().getRange(cell)
         createDropdownForRange(namedRanges[i].getRange(),cell);
      }
    }

}


function createDropdownForRange(namedRange,cell){
   var rule = SpreadsheetApp
   .newDataValidation()
   .requireValueInRange(namedRange,true);   
  cell.setDataValidation(rule);
}

1 Ответ

0 голосов
/ 23 мая 2019

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

Каждая пользовательская функция должна возвращать значение для отображения, например:

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

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