【GCPと連携で解決】GASでLINE bot等の外部サービスを扱う際、ログを出力する方法

GAS(Google App Script)を使って外部サービスを開発している際、エラーが起こってもログが見れない!と嘆いた経験がある方はいらっしゃいませんか?

先日、connpassに登壇させていただいた際に、「GAS×LINE Messaging APIでLINE Botを作っているが、ログが出ないからテストしづらい」 とのお問い合わせをいただきました

こーすけ先生

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

本記事の内容
  • GASで外部サービスを扱う際のログを出力する方法について学ぶ
  • GASとGoogle Cloud Platform(GCP)を連携する
こーすけ先生

特にプログラムを書くわけではなく、GUIでぽちぽちやればいいだけです!それでは早速やってみましょう!

この記事を読めば、GASで外部サービスを扱う際、ログを出力する方法を学ぶことができます!めちゃくちゃ便利なので、是非読んでいってください!

この記事の執筆者について
  • GASの人
  • ITベンダSEとして12年勤務する中で民間、金融、官公庁の現場を一通り経験済
  • 現在は公務員をやりながら起業に向けて着々と準備中
GASなら任せろ!

​GASを極めたい方や、業務の効率化を図りたい方は、ぜひこの記事を読んください!
難しいことはGASに任せて、我々人間は楽しちゃいましょう!

こーすけ先生

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

目次

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

がすぴょん

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

こーすけ先生

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

がすぴょん

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

こーすけ先生

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

がすぴょん

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

こーすけ先生

Google Cloud Platform(GCP)を使うことで、外部サービスでもログを出力させることができるよ!今回の記事ではその方法について解説するよ!

ログはアプリケーションの動作やエラーの原因を特定するのに役立ちます
特定の動作が予期せず失敗した場合やエラーが発生した場合、ログはその問題の原因を追跡するために不可欠です

【お題】GASとGCPを連携して、外部サービスのログを確認しよう!

本記事で取り組む演習
  • GASで外部サービスを扱う際のログを出力する方法について学ぶ
  • GASとGoogle Cloud Platform(GCP)を連携する

Google Apps Script(GAS)の場合、スクリプトが自分自身によってアクセスされて実行された場合、その実行ログは出力され、記録されます

そして、過去ログもGASエディタの左メニューの「実行数」から過去のログを確認することができます

こーすけ先生

しかしながら、LINE Messaging API との連携のためのWebアプリケーションデプロイ等ではそうはいきません

それは、デプロイ時に以下のような設定を行っており、この場合にはすべての通信でオーナーがアクセスしているわけではありません

LINE Botの場合はLINE Messaging APIがアクセス者になります

こーすけ先生

これにより、例えばGoogleスプレッドシートへ確認内容を全出力する部品を作って、ログ確認の代替手段としている方も多いと思います

これ自体は間違いではありません
かくいう私も以前はこの方法でやっていました

こーすけ先生

しかし、突破口を見付けたので、その方法を皆様には伝授致します

GASとGoogle Cloud Platform(GCP)を連携する

こーすけ先生

手順の前に少々余談ですが、実はヒントは書かれているんです

GASエディタの左メニュー「プロジェクトの設定」を確認すると、以下のような表示を確認できます

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

Google Cloud コンソールで Google Cloud のログとエラーレポートを表示するスクリプト プロジェクトで Google Cloud Logging または Error Reporting を使用している場合は、以下の手順で Google Cloud コンソールでログとレポートを確認できます

こーすけ先生

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

では、早速やっていきましょう!

Google Cloud Platformに登録する

こーすけ先生

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

なお、先に断っておきますが、このやり方はクレジットカード登録が必須となります

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

こーすけ先生

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

がすぴょん

GiBって何?
GBと違うの?

こーすけ先生

GiBという単位を聞きなれない方もいると思いますので、少しだけ解説しましょう!

GiBは当然GBの友だちです
要は人間がわかりやすい1,000を基底とするか、コンピュータが扱いやすい1,024を基底とするかの違いです

スクロールできます
単位 バイト数単位バイト数差分
KB1,000¹ = 1,000KiB1,024¹ = 1,0242.4%
MB1,000² = 1,000,000MiB1,024² = 1,048,5764.9%
GB1,000³ = 1,000,000,000GiB1,024³ = 1,073,741,8247.4%
TB1,000⁴ = 1,000,000,000,000TiB1,024⁴ = 1,099,511,627,7769.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」登録手順を説明していきます!

STEP
以下のログイン用URLにアクセスして、「無料で開始」をクリック
STEP
「同意して続行」をクリック
STEP
お支払い情報を入力し「無料で利用開始」をクリック
STEP
アンケート画面が表示されるため、回答する

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

STEP
GCPのトップ画面が表示されます
STEP
左上のプルダウン部をクリックするとポップアップが表示されるため「新しいプロジェクト」をクリック
STEP
適当なプロジェクト名を入力し「作成」をクリック
こーすけ先生

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

STEP
再び左上のプルダウン部をクリックするとポップアップが表示されるため、「STEP7で作成したプロジェクト名」をクリック
STEP
GCPトップにおいて左上のプルダウン部に「STEP7で作成したプロジェクト」が表示されていることを確認
STEP
左上のバーガーメニューから「ダッシュボード」をクリック
STEP
ダッシュボードにてプロジェクト番号を確認できます
こーすけ先生

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

STEP
左上のバーガーメニューから「APIとサービス > OAuth同意画面」をクリック
STEP
外部を選択し「作成」をクリック
STEP
GCPトップにおいて左上のプルダウン部に「STEP7で作成したプロジェクト名」が表示されていることを確認する
STEP
アプリ名、ユーザーサポートメール、ベロッパーの連絡先情報を入力し「保存して次へ」をクリック
  • アプリ名:GAS側のアプリ名など
  • ユーザーサポートメール:自身のアカウントでOK
  • デベロッパーの連絡先情報:自身のアカウントでOK
STEP
何も変更せずに「保存して次へ」をクリック
STEP
「+ ADD USERS」をクリック
STEP
GASのオーナー権限を持っているアカウントを入力し「追加」をクリック
STEP
GASエディタの「プロジェクトの設定」を開き、GCPのプロジェクト番号を入力する欄にNo.11で控えておいた番号を入力し、「プロジェクトを設定」をクリック
こーすけ先生

GASのプログラム内で、DriveAppクラスを使用している場合は、以下手順を追加で行ってください

※GASのプログラム内で、DriveAppクラスを使用していない場合は、次の「STEP20」に進んでください!

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」をクリックします

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

STEP
プロジェクト番号が設定されていることを確認
STEP
プロジェクトを再デプロイしたら、GCP側にログが排出されるようになる
こーすけ先生

再デプロイしないとアプリが正常に動作しませんのでご注意ください!

実行結果の確認

設定および再デプロイを終えたのちに、プログラムを実行してみましょう

こーすけ先生

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

STEP
GCPの左上のバーガーメニューから「ロギング > ログエクスプローラ」をクリック
STEP
ログビューワーにうつり、出力されたログを確認することができます
こーすけ先生

デフォルトは直近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サービス、プログラミング全般のご相談承ります!

この記事が気に入ったら
いいね または フォローしてね!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

GASの人。ITベンダSEとして12年勤務し、民間、金融、官公庁の現場を一通り経験済。html、css、JavaScript、Java、PHPも分かります。最近は専らGASで小規模アプリケーションを頻繁に作成しています。GASのことなら何でもお任せあれ!現在は公務員として働きながら、起業に向けて着々と準備中です!

コメント

コメントする

CAPTCHA


目次