Могу ли я использовать getActiveUserLocale () в onOpen (e) опубликованного дополнения? - PullRequest
0 голосов
/ 09 июля 2020

Google показывает на https://developers.google.com/apps-script/reference/base/session#getactiveuserlocale, как получить языковой стандарт для активного пользователя.

У меня есть надстройка редактора (не G-Suite), которую я хочу сделать многоязычной так что когда пользователь открывает лист, который запускает функцию onOpen (e), надстройка проверяет языковой стандарт пользователя, а затем переводит надстройку на язык пользователя.

Вопросы:

  1. Можно это сделать для перевода меню на другие языки?
function onInstall(e) {
  onOpen();
}
function onOpen(e) {
  var lang = Session.getActiveUserLocale().split("_")[0];
  if (lang === 'en'){
  SpreadsheetApp.getUi().createMenu('test')
  .addItem('Publish', 'upload')
  .addToUi();
  }
  else{
  SpreadsheetApp.getUi().createMenu('test')
  .addItem(LanguageApp.translate('Publish posts','en',lang), 'uploadPosts') 
  .addToUi();
  } 
}
Нужно ли мне также добавить область локали: https://www.googleapis.com/auth/script.locale в мой файл манифеста? Когда я опубликовал надстройку без области действия, пользователи видели пустое раскрывающееся меню. Если мне действительно нужна область действия, почему не указано в https://developers.google.com/apps-script/reference/base/session#getactiveuserlocale.

1 Ответ

1 голос
/ 09 июля 2020

В документации не упоминается, что требуется область авторизации, поэтому Session.getActiveUserLocale() можно вызвать из onOpen.


Поскольку речь идет о простом триггере onOpen в Google Apps Script добавить -on вы должны знать о рабочем цикле авторизации надстройки.

В основном вам следует учитывать следующие случаи

  1. Пользователи, которые установили надстройку в электронные таблицы, где надстройка не включена (authMode = NONE)
  2. Пользователи, которые установили надстройку в электронных таблицах, где надстройка была включена (authmode = LIMITED)
  3. Пользователи, которые являются редакторами электронная таблица, в которой надстройка включена, но кто ее не установил (authmode = LIMITED, но пользователь не авторизовал выполнение сценария)
  4. onOpen вызывается активными пользователями (authMode = FULL)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...