Я пытаюсь внедрить боковую панель в свою электронную таблицу, чтобы получить пользовательский ввод для использования моих сценариев. Я не смог заставить его успешно вызывать какие-либо функции на стороне сервера. Я собрал простой сценарий из документации Google и несколько вопросов о стеке потока, которые я прочитал, но получаю сообщение об ошибке. Он может печатать на консоль, но выдает ошибку при попытке вызвать функцию logText () с google.script.run .
Файл сценария: * Файл 1007 *
function onOpen() {
SpreadsheetApp.getUi()
.createMenu('Extra Functions')
.addItem('Show sidebar', 'showSidebar')
.addToUi();
}
function showSidebar() {
var html = HtmlService.createHtmlOutputFromFile('Test')
.setTitle('Testing')
.setWidth(300);
SpreadsheetApp.getUi()
.showSidebar(html);
}
function logInput(text) {
Logger.log(text);
}
HTML (тест. html):
<!DOCTYPE html>
<html>
<head>
<base target="_top">
<script>
function onFailure(error) {
var div = document.getElementById('output');
div.innerHTML = "ERROR: " + error.name + ": " + error.message;
}
function logText(){
var txt = document.getElementById("txt_input").value;
console.log(txt);
google.script.run.withFailureHandler(onFailure).logInput(txt);
}
</script>
</head>
<body>
<label for="txt_input">Input Text:</label>
<input type="text" id="txt_input"><br>
<button onclick='logText()'>Send Name</button><br>
<div id="output"></div>
</body>
</html>
Я попытался запустить его как на новом скрипте приложений V8, так и на скриптах приложений Legacy, и я получаю немного отличающаяся ошибка для каждого.
Legacy Script Apps
ОШИБКА: ScriptError: У вас нет доступа для выполнения этого действия. Пожалуйста, попросите владельца этого элемента предоставить вам доступ.
Apps Script V8
ОШИБКА: ScriptError: К сожалению, произошла ошибка сервера при чтении из место хранения. Код ошибки PERMISSION_DENIED.
Я занимался исследованием авторизации, но, насколько я могу судить, у него есть все разрешения, необходимые для сценария, связанного с контейнером (https://developers.google.com/apps-script/guides/bound) , Он имеет область видимости / auth / script.container.ui OAuth, которая должна позволять ему "отображать и запускать сторонний веб-контент в приглашениях и на боковых панелях внутри приложений Google", а также / аутентификация / таблицы Область применения. Я также являюсь владельцем электронной таблицы и проекта сценария.
Поскольку он не функционирует как веб-приложение, его не нужно развертывать и ему не нужна функция doGet (). https://developers.google.com/apps-script/guides/html#serve_html_as_a_google_docs_sheets_slides_or_forms_user_interface
Я не уверен, что еще можно попытаться заставить это работать, любая помощь будет принята с благодарностью