前提・実現したいこと
自作した、ライブラリのhtmlファイルをスプレッドシートのサイドバーに表示させて、
サイドバーに配置した、ボタンから、google.script.runを使って、サーバーサイドのgsファイルの機能を利用したい
発生している問題・エラーメッセージ
・ライブラリ化(viewSidebar.gs、sidebar.html、sidebarscript.htmlの3ファイル)
・ライブラリ内のsidebar.htmlをスプレッドシートのサイドバーに表示
・sidebar.htmlから、同ライブラリ内「sidebarscript.html」の<script>処理を読み込み(htmlファイルとscirptを分離したかった)
までは実現したのですが、
sidebarscript.htmlから、google.script.runにてviewSidebar.gsのserverTestFunc()の実行ができません。
ブラウザ開発者ツールのコンソールに
Uncaught TypeError: google.script.run.serverTestFunc is not a function
と表示されます
該当のソースコード
・sidebar.html
html
1<!DOCTYPE html> 2<html> 3 <head> 4 <base target="_top"> 5 <link rel="stylesheet" href="https://ssl.gstatic.com/docs/script/css/add-ons1.css"> 6 </head> 7 <body> 8 <div class="sidebar"> 9 <div class="block form-group"> 10 </div> 11 <div class="block"> 12 <button class="blue" onclick="testFunc()">ボタン</button> 13 </div> 14 </div> 15 <?!= HtmlService.createHtmlOutputFromFile('sidebarscript').getContent(); ?> 16 </body> 17</html>
・sidebarscript.html
html
1 2<script> 3 4function testFunc(){ 5 6 // alert("ボタンが押された"); 7 // ↑アラートは表示されたので、サイドバーのボタンを押して、testFunc自体は動いていることを確認 8 9 google.script.run.serverTestFunc("testtest"); 10 11 12} 13</script> 14
・viewSidebar.gs
js
1function showSidebar() { 2 var htmlOutput = HtmlService.createTemplateFromFile('sidebar').evaluate(); 3 htmlOutput.setTitle("サイドバー"); 4 SpreadsheetApp.getUi().showSidebar(htmlOutput); 5} 6 7// 【この関数が実行されない】 8// 表示されたサイドバーのボタンで実行したい 9function serverTestFunc(data){ 10 11 Logger.log(data); 12 13} 14 15// スプレッドシートにサイドバー表示のメニュー追加 16function menuOpen() { 17 var sheet = SpreadsheetApp.getActiveSpreadsheet(); 18 var entries = [ 19 { 20 name :"サイドバー表示", 21 functionName:"showSidebar" 22 } 23 ]; 24 sheet.addMenu("カスタム機能", entries); 25};
【スプレッドシート側】
・コード.gs
js
1// ライブラリのメニュー追加機能を実行 2function onOpen(){ 3 mylibrary.menuOpen(); 4} 5 6// 追加されたメニュー「サイドバー」をクリックして、ライブラリのsidebar.htmlを読み込み 7function showSidebar(){ 8 mylibrary.showSidebar(); 9} 10
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/10/26 06:06