この記事は GAS道場 Advent Calendar 2019 の7日目の記事です。 Google Apps Script(GAS)をこれから使おうという方向けのアドベントカレンダーになります。
今回は、GASを使ってHTMLを作成し、それをインターネットに公開してみることをやってみたいと思います。
スクリプトとHTMLを用意する
さて、いつもどおりGASのエディタを開いてみましょう。
上のメニューからファイル→New→HTMLファイル をクリック
※なぜか英語表示になってしまっているので、いい感じに読みながら変換してください
ファイル名を入力します。ここではindexとします。
すると、このようにindex.htmlが追加されたと思います。
さて、ここからスクリプトを書いていきます。 スクリプト側のコード.gsに以下のようなスクリプトを入力します。
function doGet(e) { var html = HtmlService.createHtmlOutputFromFile('index'); return html; }
index.htmlには以下のように入力します。
<!DOCTYPE html>
<html>
<head>
<base target="_top">
</head>
<body>
Hello World.
</body>
</html>
簡単なHello Worldですね。
ウェブサイトとして公開
さて、これで準備ができました。
上のメニューから公開→ウェブアプリケーションとして導入をクリックします。
そして、このようなポップアップが表示されると思うので、青いボタンをクリックします。
その次の画面で表示されるURLをコピーしてブラウザでアクセスしてみてください。
なんと、しっかりHello Worldが表示されています。 すなわち、これだけで簡単にウェブサイトが表示されることになります。
スプレッドシートの値を表示
では、せっかくなので、スプレッドシートの値を表示してみましょう。
このように、スプレッドシートを用意します。Hey World.と入力しています。
function doGet(e) { return HtmlService.createTemplateFromFile('index').evaluate(); } function getData() { var data = SpreadsheetApp.openById('1sgRxnlKO_i-5rdoex3_Vww27fF0MH2gXgg0BYB3bEeo').getSheetByName('シート1').getRange(1,1).getValue(); return data; }
今回はこのようなスクリプトを作成しました。getData()でスプレッドシートの値を取得しつつ、returnでその値を返しています。 実際に動かしてみたい場合は、自分自身で作成したスプレッドシートのIDを書き換える必要があります。
スプレッドシートの値を操作するには、記事を書きましたので御覧ください。
<!DOCTYPE html> <html> <head> <base target="_top"> </head> <body> <?= getData(); ?> </body> </html>
index.htmlは、先程までHello Worldが書いてあった場所に、謎のタグとgetData()が書かれています。これは、getData()の計算結果を出力するというものです。
実行結果
さて、上の手順と同様にウェブアプリケーションとして公開して実際にみてみましょう。
スプレッドシートに入力したものが表示されますね。 スプレッドシートの値を変更してもその値が表示されるはずなので、実際に変更しながらリロードしてみてください。
アクセスカウンターを作成してみよう
スプレッドシートの値を取得できるということは、変更もできるはずです。 ということで、先程のスクリプトを以下のように変更してみましょう。
function doGet(e) { return HtmlService.createTemplateFromFile('index').evaluate(); } function getData() { var data = SpreadsheetApp.openById('1sgRxnlKO_i-5rdoex3_Vww27fF0MH2gXgg0BYB4bEeo').getSheetByName('シート1').getRange(1,1).getValue(); SpreadsheetApp.openById('1sgRxnlKO_i-5rdoex3_Vww27fF0MH2gXgg0BYB4bEeo').getSheetByName('シート1').getRange(1,1).setValue(data + 1) return data; }
dataに1を加えたものをセルに入力しています。すなわち、数値がインクリメントされるということです。
また、スプレッドシート側のセルの値は0などの数値をいれておきましょう。
実行結果
さて、もう一度ウェブアプリケーションとして導入してみましょう。
2回目以降の公開は、バージョンの項目をNewにして更新を押しましょう。 すると、アクセスするたび数値が増えるサイトが表示されたと思います。 これで簡単にDBのようにスプレッドシートを扱いながらアクセスカウンターを設置することができました。
さいごに
さて、これで外のインターネットに自分の作成したHTMLを公開できました。また、スプレッドシートというDBのようなものを利用しながらデータの表示などができるようになりました。 次の記事では、これをもっと扱いやすい形で操作していきたいと考えています。