GAS(Google App Script)を使って外部サービスを開発している際、エラーが起こってもログが見れない!と嘆いた経験がある方はいらっしゃいませんか?
先日、connpassに登壇させていただいた際に、「GAS×LINE Messaging APIでLINE Botを作っているが、ログが出ないからテストしづらい」 とのお問い合わせをいただきました


今回は、このお悩みをまるっと解決する方法をお伝えいたします



特にプログラムを書くわけではなく、GUIでぽちぽちやればいいだけです!それでは早速やってみましょう!
この記事を読めば、GASで外部サービスを扱う際、ログを出力する方法を学ぶことができます!めちゃくちゃ便利なので、是非読んでいってください!
GASを極めたい方や、業務の効率化を図りたい方は、ぜひこの記事を読んください!
難しいことはGASに任せて、我々人間は楽しちゃいましょう!



当ブログでは実際に仕事でGASを扱っている私が、GASの魅力について徹底的に取り上げていきます!


そもそも何故ログを出力させる必要があるの?



そもそも何故、ログを出力させることが必要なの?



システムの運用後、何かのエラーで止まった場合、ログを確認することで何故エラーが起こったのかヒントを得ることができます



そっか!
ログを確認することはエラーを解消するために必要なんだね!



ただ…外部サービスと連携した場合、ログを確認することができないんだよね



え…
じゃあ、どうすることもできないってこと?



Google Cloud Platform(GCP)を使うことで、外部サービスでもログを出力させることができるよ!今回の記事ではその方法について解説するよ!
ログはアプリケーションの動作やエラーの原因を特定するのに役立ちます
特定の動作が予期せず失敗した場合やエラーが発生した場合、ログはその問題の原因を追跡するために不可欠です
【お題】GASとGCPを連携して、外部サービスのログを確認しよう!
Google Apps Script(GAS)の場合、スクリプトが自分自身によってアクセスされて実行された場合、その実行ログは出力され、記録されます
そして、過去ログもGASエディタの左メニューの「実行数」から過去のログを確認することができます



しかしながら、LINE Messaging API との連携のためのWebアプリケーションデプロイ等ではそうはいきません
それは、デプロイ時に以下のような設定を行っており、この場合にはすべての通信でオーナーがアクセスしているわけではありません
LINE Botの場合はLINE Messaging APIがアクセス者になります





これにより、例えばGoogleスプレッドシートへ確認内容を全出力する部品を作って、ログ確認の代替手段としている方も多いと思います
これ自体は間違いではありません
かくいう私も以前はこの方法でやっていました



しかし、突破口を見付けたので、その方法を皆様には伝授致します
GASとGoogle Cloud Platform(GCP)を連携する



手順の前に少々余談ですが、実はヒントは書かれているんです
GASエディタの左メニュー「プロジェクトの設定」を確認すると、以下のような表示を確認できます


緑の枠内に書かれた文章を読むと「ヒント」が書かれていることが分かります



つまり、スクリプトプロジェクト(つまりはGAS)をGoogle Cloud Loggingに連携すれば、ログやレポートを確認できると書いている(気がします)
では、早速やっていきましょう!
Google Cloud Platformに登録する



じゃあ、早速「Google Cloud Platform」に登録していこう!


とはいえ、Googleから無料クレジット$300がもらえますし、ログに関しては月当たり50GiB(ギビバイト)は無料です



月で50GiBを超えることは基本的にあり得ない(あまりにもログを吐き出している場合を除く)ので安心してご利用ください



GiB
って何?GB
と違うの?



GiB
という単位を聞きなれない方もいると思いますので、少しだけ解説しましょう!
GiBは当然GBの友だちです
要は人間がわかりやすい1,000を基底とするか、コンピュータが扱いやすい1,024を基底とするかの違いです
単位 | バイト数 | 単位 | バイト数 | 差分 |
---|---|---|---|---|
KB | 1,000¹ = 1,000 | KiB | 1,024¹ = 1,024 | 2.4% |
MB | 1,000² = 1,000,000 | MiB | 1,024² = 1,048,576 | 4.9% |
GB | 1,000³ = 1,000,000,000 | GiB | 1,024³ = 1,073,741,824 | 7.4% |
TB | 1,000⁴ = 1,000,000,000,000 | TiB | 1,024⁴ = 1,099,511,627,776 | 9.95% |
50GiBは、53,687,091,200(537億バイト)であり、半角文字であれば1文字1バイトなので530億文字、全角文字でも3バイト計算だとして179億文字分の容量です
ログに出力される内容は、メッセージだけではなく、付帯情報なども諸々出力し1出力で1000~2000バイトくらいを消費します



だとしても50GiBというのは、27,000,000回(53,687,091,200 / 2,000)のログ出力には耐えれそうな容量です



なるほど…
確かに基本的には問題ないよねって単位だね!
Google Cloud Platformに登録手順



前置きが長くなりましたが、「Google Cloud Platform」登録手順を説明していきます!










簡単なアンケート画面がポップアップで表示されます
無視しても構いませんが、Googleに迎合するため、回答したのちに「完了」をクリックします









クリック後はGCPトップに戻ります











プロジェクト番号はのちほど使用するため、控えておきましょう








- アプリ名:GAS側のアプリ名など
- ユーザーサポートメール:自身のアカウントでOK
- デベロッパーの連絡先情報:自身のアカウントでOK











GASのプログラム内で、DriveApp
クラスを使用している場合は、以下手順を追加で行ってください
DriveApp
クラスを使用している場合、この手順を行わないと、GASが正しく動作しません
23:17:51 お知らせ 実行開始
23:17:51 エラー Exception: We're sorry, a server error occurred. Please wait a bit and try again.



こんなカンジでエラーが出てしまいます
なので、忘れずに以下のように設定を行いましょう!
左上のバーガーメニューから「APIとサービス>ライブラリ」をクリックします


APIとサービスを検索欄に「Drive API」と入力します


「Google Drive API」をクリックします


「有効にする」をクリックします







再デプロイしないとアプリが正常に動作しませんのでご注意ください!
実行結果の確認
設定および再デプロイを終えたのちに、プログラムを実行してみましょう



もちろん、LINE bot等から実行いただいて構いません







デフォルトは直近1時間のログとなっているため、例えば1週間、ログレベルを警告以上…等にしたりして検索フィルタを設定しましょう!
余談ですが、ログエクスプローラはバーガーメニューの中でだいぶ下の方にあるため、以下のようにピン留めすることをお勧めします


ログの使用量を確認する
ログに関しては月当たり50GiB(ギビバイト)は無料であり、これを超えることは基本的にあり得ないと述べましたが、どの程度使用しているかを確認できた方がもちろん良いですよね
GCPの左上のバーガーメニューから「ロギング > ログストレージ」をクリックします
※すでにロギングメニュー画面の場合は、左メニューに「ログストレージ」が表示されています


ログストレージの使用量を確認できます


まとめ
今回は「Google Cloud Platform(GCP)と連携することで、GAS単独運用では確認不可のログを確認する」というテーマで解説を行いました


以前、Googleの生成AI「Gemini Pro」を使ってLINE botを作成する方法をお伝えしましたが、今回の記事の方法を使えば、ログを確認することができます!
GASは非常に便利ですが、Webアプリケーション運用を行っていると、「なんでログが見られないんだ!!!」という場面に出くわすことがあります



そんな時は、今回の記事を参考にGCPと連携し、GASをさらに活用し楽しんでいきましょう!!
ぜひ、皆さんも実業務での活用に取り組んでみてください
引き続き、GASを楽しんでいきましょう!!



X(旧:Twieer)にて、ブログの更新やQiita記事の更新、GAS情報をお届けしますので、是非フォローしてください!





おかげさまで今年5月に起業しました!
GASやGoogleサービス、プログラミング全般のご相談承ります!



YouTubeでGoogleサービスをより
快適に使う方法をご紹介しています!
見て頂けたらうれしいです
コメント