#html #vue.js #google-apps-script #google-sheets
#HTML #vue.js #google-приложения-скрипт #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.Не могли бы вы предоставить код, связанный с кнопками на боковых панелях, а также код для первого отображения боковой панели? Кроме того, я предполагаю, что вы
testing
являетесь дополнением, верно? Какой режим авторизации вы используетеAuthMode.NONE
(только что установлен) илиAuthMode.LIMITED
(включен)? В любом случае, я думаю, что ваша проблема связана с:Add-ons can't open sidebars or dialogs while executing in AuthMode.LIMITED. You can use menu items to open sidebars and dialogs since these run in AuthMode.FULL.
ссылка2. Уважаемый Jamm, пожалуйста, не включайте имя тега в качестве префикса заголовка с или без ввода. Это шумно и никак не помогает публикации. Однако, чего это достигает, так это дополнительной работы для редакторов сайта. Спасибо!
3. Также, пожалуйста, покажите разметку боковой панели и то, как она загружается. P.s. вероятно, это связано с несколькими входами в систему. Откройте DevTools, если вы используете Chrome (или любой другой подобный инструмент), и найдите вкладку Сеть. Очистите ее и нажмите на кнопку. Вы увидите обращение к серверам Google — проверьте ответ. Скорее всего, она будет содержать ошибку проблемы с авторизацией (несмотря на возврат 200 успешных ответов)
4. @OlegValter Спасибо за ваш совет! Я добавил коды к этому сообщению. Код для первого отображения боковой панели работает хорошо. Но другое не работает.
5. @OlegValter Я проверяю режим авторизации обоих владельцев или нет. Их режим авторизации «ОГРАНИЧЕН». Я думаю, что причиной является Google Workspace (G suite). Учетная запись, которая может переключать боковые панели, — это учетная запись Google Workspace (G suite). Но другой, который не может этого сделать, нет. Это личный кабинет.