1. はじめに
NotionTimeRecorder を使っていて、クリック後に空の画面が出てきて、それを消すのが面倒でした。どうせスタートするなら、該当のページに飛びたいところです。ただし、GAS ではセキュリティの問題からリダイレクトが許可されなくなりました。
ステップは多くなりますが、どうせページ遷移するなら該当のページへのリンクが書かれたページを表示すればよいのではと思いました。ということで、早速改修です。
2. 調査
GAS で HTML を吐き出せばいいので、調べたところ以下のページが見つかりました。 sites.google.com
html ファイルを用意して、それを読み込んで返却すればよいようです。埋め込みたい文字列はグローバルスコープに置かれている変数から取得できるとのことです。
3. HTML ファイルの準備
コード.gs と同じ場所に html ファイルが置けるようです。今回はリンクだけあればいいので、7行目だけ追加しました。
中身はこんな感じです。output.append でここに記録できるようです。
<!DOCTYPE html> <html> <head> <base target="_top"> </head> <body> <a href="<? output.append(updated_page.url) ?>">Go to page</a> </body> </html>
4. スクリプトの修正
スクリプトの該当部分は以下のように変更しました。updated_page をグローバルスコープの変数に代入し、HTML ファイルを読み込み、評価して返却するだけです。
let updated_page = null // GET アクセスした時のエントリー関数 function doGet(e) { const id = e.parameter.id updated_page = timeRecording(id) return HtmlService.createTemplateFromFile('show').evaluate() }
5. おわりに
再度デプロイして、実行すると Go to page というリンクが書かれたページが表示されました。このリンクをクリックすることで該当ページが開くので便利になりました。