Как переключать боковые панели в электронной таблице, где вы являетесь участником note Google Workplace?

#vue.js #google-apps-script

#vue.js #google-приложения-скрипт

Вопрос:

Я разрабатываю надстройку для электронных таблиц Google с помощью GAS. Я хочу переключать боковые панели с помощью HtmlService метода класса.

Ниже приведен мой код.

 function showSidebarA() {
  const ui = HtmlService.createTemplateFromFile("html/A").evaluate().setTitle("sidebarA");
  SpreadsheetApp.getUi().showSidebar(ui);
}

function showSidebarB() {
  const ui = HtmlService.createTemplateFromFile("html/B").evaluate().setTitle("sidebarB");
  SpreadsheetApp.getUi().showSidebar(ui);
}
  

В HTML-разметке боковой панели есть кнопки.
Мы можем переключать боковые панели нажатием кнопок.

Однако это работает плохо.

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

Я не знаю, что делать, потому что сообщений об ошибках нет.


Код для первого отображения боковой панели

 function onOpen(e) {
  if (e.authMode == ScriptApp.AuthMode.NONE){
    SpreadsheetApp.getUi().createAddonMenu()
      .addItem('sidebarA', 'showSidebarA')
      .addToUi();
  } else {
    SpreadsheetApp.getUi().createAddonMenu()
      .addItem('sidebarB', 'showSidebarB')
      .addToUi();
  }
}

function onInstall(e){
  onOpen(e);
}

  

Код, связанный с кнопками на боковых панелях

sidebarA.html

 <body>
  <div id="app">
    <v-app>
      <v-btn icon @click="showSidebarB">
        <v-icon large>mdi-arrow-left-bold-circle<v-icon>
      </v-btn>
    <v-app>
  </div>
</body>

<script src="https://cdn.jsdelivr.net/npm/vue@2.x/dist/vue.js"></script>
<script src="https://cdn.jsdelivr.net/npm/vuetify@2.x/dist/vuetify.js"></script>
<script>
  var vm = new Vue({
    el: '#app',
    vuetify: new Vuetify(),
    data() {
      return {}
    },
    methods: {
      showSidebarB: function() {
        google.script.run.showSidebarB();
      }
    }
  })
</script>
  

sidebarB.html

 <body>
  <div id="app">
    <v-app>
      <v-btn icon @click="showSidebarA">
        <v-icon large>mdi-arrow-left-bold-circle<v-icon>
      </v-btn>
    <v-app>
  </div>
</body>

<script src="https://cdn.jsdelivr.net/npm/vue@2.x/dist/vue.js"></script>
<script src="https://cdn.jsdelivr.net/npm/vuetify@2.x/dist/vuetify.js"></script>
<script>
  var vm = new Vue({
    el: '#app',
    vuetify: new Vuetify(),
    data() {
      return {}
    },
    methods: {
      showSidebarA: function() {
        google.script.run.showSidebarA();
      }
    }
  })
</script>
  

Комментарии:

1. Как выполняется надстройка? Тестирование через Test as add-on... ? Какой режим авторизации вы используете?

2. Я опубликовал дополнение! Я выполняю это в рабочей среде.

3. Привет! Я зарегистрировал ошибку в системе отслеживания проблем, поскольку у меня возникли проблемы с вызовом google.script.run боковой панели, если была включена версия 8, но проблема, похоже, исчезла, и я могу успешно переключать боковые панели в надстройке, используя ваш код, даже если включена версия 8 (подробнее см. Мой ответ). С этим ваша проблема должна была исчезнуть. Можете ли вы проверить, так ли это?

Ответ №1:

Это может быть ошибкой:

Серверные функции, вызываемые через google.script.run на боковой панели, не выполняются успешно, если включена версия 8. Эти выполнения не отображаются на вкладке выполнение

Кажется, не имеет значения, является ли это частью дополнения или нет; боковая панель, открытая через простое пользовательское меню, показывает то же поведение.

Если V8 отключен, эта проблема исчезает. Поэтому, пожалуйста, подумайте об отключении версии 8: ваша проблема должна исчезнуть, и вы сможете успешно переключать боковую панель.

Я отправил ошибку в Issue Tracker:

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

Обновление 2020-11-10:

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

Следовательно, ошибка была отмечена как Obsolete в системе отслеживания проблем.