GAS側からスプレッドシートのサイドバーにデータを送る方法
以前、Google Apps Scriptでスプレッドシート上にサイドバーを出す方法について書きました。
今回はGoogle Apps Script側からデータをサイドバーに送り、それをTextAreaに表示するという方法について書きます。gsファイルとhtmlファイル間のデータのやり取りがポイントになります。
[ad#top-1]
概要
ざっくりとした概要をまずは説明します。
最初にgsファイルからサイドバーを出すよう指示をします。サイドバーはindex.htmlで構成されています。サイドバーが現れたらJavascriptのonloadイベントでgsファイル側の関数getText()を呼び出し、そこで返されたデータをonSuccess関数でキャッチしてTextAreaに表示するという流れです。
gsファイル側のソースコード
以下がgsファイル側のソースコードです。サイドバーを表示するshowSideBar()関数と単純に"Hello world"という値を返すgetText()関数の2つで構成されています。
function showSideBar() {
var ui = SpreadsheetApp.getUi();
var htmlOutput = HtmlService.createHtmlOutputFromFile('index')
.setTitle("SideBar Test");
ui.showSidebar(htmlOutput);
}
function getText() {
return "Hello world";
}
index.html側のソースコード
こちらがindex.htmlです。onloadイベントでgsファイルのgetText関数にアクセスしていることがわかるかと思います。onSuccessというコールバック関数でデータを受け取ってTextAreaに表示させています。
<!DOCTYPE html>
<html>
<head>
<base target="_top">
</head>
<body>
<textarea id="text" style="font-size:18pt;"></textarea>
</body>
<script>
window.onload = function() {
google.script.run
.withFailureHandler(onFailure)
.withSuccessHandler(onSuccess)
.getText(); //gsファイルの関数にアクセス
}
function onSuccess(result) {
document.getElementById("text").value = result;
}
function onFailure(e) {
document.getElementById("text").value = "Error";
}
</script>
</html>
実行結果
こちらが実行結果です。gsファイルから送ったデータがちゃんとTextAreaに表示されました。
スポンサーリンク


