【0からGASを学ぶ】GAS×GCP連携によるログの可視化でデバッグを容易にしよう！

# はじめに
本シリーズでは、GASの始め方や便利な使い方、ビジネス活用まで幅広く解説します。シリーズをひと通り読んでいただければ、あなたもきっとGASマスターになれるはずです。

# シリーズの対象者
* そもそもGASってなんだか**わからない**方
* GASを学びたいけど**何から始めればいいか**わからない方
* GASはわかり始めたけど、**もっと活用ができないか**と模索している方
* とにかく**Googleが好き！** という方

# 前回記事
https://qiita.com/gas-suke/items/3b26c108ca7d362d691c

# GASとGCPを連携する
では早速始めていきましょう。【0からGASを学ぶ】シリーズの第21回は「GAS×GCP連携によるログの可視化でデバッグを容易にしよう！」です。先日、connpass（以下リンク先）にて登壇させていただいた際に、**「GAS×LINE Messaging APIでLINE Botを作っているが、ログが出ないからテストしづらい」** とのお問い合わせをいただきました。今回は、このお悩みを**まるっと解決する方法**をお伝えいたします。特にプログラムを書くわけではなく、GUIでぽちぽちやればいいだけです。それでは早速やってみましょう。

https://linedevelopercommunity.connpass.com/event/307454/

## そもそもなぜログが出力されないのか
GASは**自分自身（つまりはオーナー自ら）がアクセスし実行**した場合には、ログは**出力・記録**ともにされます。そのため、過去ログも、GASエディタの左メニュー「実行数」から確認することができます。しかしながら、**LINE Messaging API との連携のためのWebアプリケーションデプロイ**等ではそうはいきません。それは、デプロイ時に以下のような設定を行っており、この場合にはすべての通信でオーナーがアクセスしているわけではありません。**LINE Botの場合はLINE Messaging APIがアクセス者**になります。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3575702/4945a377-fe4c-44c3-220b-4fa581b5ed77.png" width="400">

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

## GASとGCPを連携する
手順の前に少々余談ですが、実は**ヒントは書かれている**んです。GASエディタの左メニュー「プロジェクトの設定」を確認すると、以下のような表示を確認できます。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3575702/8142ef28-7951-5b78-3688-e5a1dc063e7f.png" width="400">

:::note info
四角で囲ったリンク先には以下のような記述があります。
> Google Cloud コンソールで Google Cloud のログとエラーレポートを表示する
スクリプト プロジェクトで Google Cloud Logging または Error Reporting を使用している場合は、以下の手順で Google Cloud コンソールでログとレポートを確認できます。
> 
> Cloud プロジェクトを開きます。
メニュー menu をクリックします。
[オペレーション] セクションまで下にスクロールし、[ロギング] > [ログ エクスプローラ] をクリックします。
エラーレポートを表示するには、[オペレーション] セクションまで下にスクロールし、[Error Reporting] をクリックします。エラーレポートを設定するように求められた場合、スクリプト プロジェクトでまだ例外がログに記録されていないことを意味します。
:::
つまり、スクリプトプロジェクト（つまりはGAS）をGoogle Cloud Loggingに連携すれば、**ログやレポートを確認できる**と書いている（気がします）。ではやっていきましょう。

## 設定手順
:::note warn
なお、先に断っておきますが、このやり方は**クレジットカード登録が必須**となります。とはいえ、Googleから無料クレジット$300がもらえますし、ログに関しては月当たり50GiB（ギビバイト）は無料です。これを超えることは基本的にあり得ない（あまりにもログを吐き出している場合を除く）ので安心してご利用ください。
:::

::: note info
余談が長くなり申し訳ありませんが、`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% |
:::

それでは、ついに手順の解説となります。
※以下は**Google Cloud Platformに未登録の方を前提**に手順を示しています。そのため、すでに登録済みの方は、手順No.5から実施してください。
<table>
  <tr>
    <th>№</td>
    <th>手順</td>
    <th>イメージ</td>
  </tr>
  <tr>
    <td>1</td>
    <td>
    以下のログイン用URLにアクセスして、「無料で開始」をクリックします。<br/><a href="https://cloud.google.com/free/?hl=ja
" target="_blank">https://cloud.google.com/free/?hl=ja
</a>
    </td>
    <td><img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3575702/c22822df-7e87-03a7-2b3a-840a41545717.png" width="400"></td>
  </tr>
  <tr>
    <td>2</td>
    <td>
    「同意して続行」をクリックします。
    </td>
    <td><img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3575702/0a2a7789-52fc-2230-4e9e-986671d98a8a.png" width="400"></td>
  </tr>
  <tr>
    <td>3</td>
    <td>
    お支払い情報を入力し「無料で利用開始」をクリックします。
    </td>
    <td><img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3575702/0aed3b61-1301-2e32-31bb-870d3f1bf100.png" width="400"></td>
  </tr>
  <tr>
    <td>4</td>
    <td>
    簡単なアンケート画面がポップアップで表示されます。無視しても構いませんが、Googleに迎合するため、回答したのちに「完了」をクリックします。<br/><b>※もちろん無視でも構いません。<b/>
    </td>
    <td><img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3575702/091b2c4f-7d5b-7322-5250-626e854500ce.png" width="400"></td>
  </tr>
  <tr>
    <td>5</td>
    <td>
    GCPのトップ画面が表示されます。
    </td>
    <td><img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3575702/45b4d899-b18b-285a-5007-9d0672cd60b1.png" width="400"></td>
  </tr>
  <tr>
    <td>6</td>
    <td>
    左上のプルダウン部をクリックするとポップアップが表示されるため「新しいプロジェクト」をクリックします。
    </td>
    <td><img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3575702/b5351fb4-bfd9-2fef-7c08-6e9c40952afb.png" width="400"></td>
  </tr>
  <tr>
    <td>7</td>
    <td>
    適当なプロジェクト名を入力し「作成」をクリックします。クリック後はGCPトップに戻ります。
    </td>
    <td><img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3575702/94c8774b-7511-cdfd-4fed-479fd350d0ce.png" width="400"></td>
  </tr>
  <tr>
    <td>8</td>
    <td>
    再び左上のプルダウン部をクリックするとポップアップが表示されるため、今度は「No.7で作成したプロジェクト」をクリックします。
    </td>
    <td><img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3575702/9676dd6b-ab82-7f84-6696-c24daafdb447.png" width="400"></td>
  </tr>
  <tr>
    <td>9</td>
    <td>
    GCPトップにおいて左上のプルダウン部に「No.7で作成したプロジェクト」が表示されていることを確認します。
    </td>
    <td><img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3575702/74c70535-ccbc-2822-603f-fd6ec23c5fcc.png" width="400"></td>
  </tr>
  <tr>
    <td>10</td>
    <td>
    左上のバーガーメニューから「ダッシュボード」をクリックします。
    </td>
    <td><img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3575702/6d920518-175d-ce9a-08eb-bf76b2fa2ae3.png" width="400"></td>
  </tr>
  <tr>
    <td>11</td>
    <td>
    ダッシュボードにて<b>プロジェクト番号</b>を確認できます。こちらの番号をのちほど使用するため、控えておきましょう。
    </td>
    <td><img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3575702/418f8e46-8b3f-0f52-f0f0-676230ef233d.png" width="400"></td>
  </tr>
  <tr>
    <td>12</td>
    <td>
    左上のバーガーメニューから「APIとサービス　＞　OAuth同意画面」をクリックします。
    </td>
    <td><img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3575702/5464ff4f-7b85-f676-2da7-1ced5faca845.png" width="400"></td>
  </tr>
  <tr>
    <td>13</td>
    <td>
    外部を選択し「作成」をクリックします。
    </td>
    <td><img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3575702/0a2f1423-a0f2-9e75-ddff-3153887f9782.png" width="400"></td>
  </tr>
  <tr>
    <td>14</td>
    <td>
    GCPトップにおいて左上のプルダウン部に「No.7で作成したプロジェクト」が表示されていることを確認します。
    </td>
    <td><img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3575702/74c70535-ccbc-2822-603f-fd6ec23c5fcc.png" width="400"></td>
  </tr>
  <tr>
    <td>15</td>
    <td>
      <ul>
        <li>アプリ名：GAS側のアプリ名など</li>
        <li>ユーザーサポートメール：自身のアカウントでOK</li>
        <li>デベロッパーの連絡先情報：自身のアカウントでOK</li>
      </ul>
      を入力し「保存して次へ」をクリックします。
    </td>
    <td><img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3575702/8e91efae-9060-3e90-b808-ca1665760136.png" width="400"></td>
  </tr>
  <tr>
    <td>16</td>
    <td>
    何も変更せずに「保存して次へ」をクリックします。
    </td>
    <td><img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3575702/255d19a0-2a95-9f70-f4fe-baca8c70c0e9.png" width="400"></td>
  </tr>
  <tr>
    <td>17</td>
    <td>
    「+ ADD USERS」をクリックします。
    </td>
    <td><img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3575702/3c91709c-2928-5daa-d35e-761e86d9b817.png" width="400"></td>
  </tr>
  <tr>
    <td>18</td>
    <td>
    GASのオーナー権限を持っているアカウントを入力し「追加」をクリックします。
    </td>
    <td><img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3575702/3f12c9d4-d12b-3b4e-028f-83570ad0b846.png" width="400"></td>
  </tr>
  <tr>
    <td>19</td>
    <td>
    GASエディタの「プロジェクトの設定」を開き、GCPのプロジェクト番号を入力する欄に<b>No.11で控えておいた番号</b>を入力し、「プロジェクトを設定」をクリックします。
    </td>
    <td><img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3575702/8142ef28-7951-5b78-3688-e5a1dc063e7f.png" width="400"></td>
  </tr>
  <tr>
    <td>20</td>
    <td>
    プロジェクト番号が設定されていることを確認します。
    </td>
    <td><img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3575702/2194c9d9-7846-5d4a-2af0-905abe8be5ba.png" width="400"></td>
  </tr>
  <tr>
    <td>21</td>
    <td>
    プロジェクトを再デプロイしたら、GCP側にログがはかれるようになります。<br/>※再デプロイしないとアプリが正常に動作しませんのでご注意ください。
    </td>
    <td></td>
  </tr>
</table>

:::note info
GASのプログラム内で、`DriveApp`クラスを使用している場合は、**上記No.18の後に以下手順を追加で行ってください**。これを行わないと、GASが正しく動作してくれません。
※というか大抵の場合、GASで`DriveApp`クラスは使用しますので、この設定は**必須**で行いましょう。なら、**先に書けって話**ですね。
```:実行結果
23:17:51	お知らせ	実行開始
23:17:51	エラー Exception: We're sorry, a server error occurred. Please wait a bit and try again.
```

<table>
  <tr>
    <th>№</td>
    <th>手順</td>
    <th>イメージ</td>
  </tr>
  <tr>
    <td>1</td>
    <td>
    左上のバーガーメニューから「APIとサービス　＞　ライブラリ」をクリックします。
    </td>
    <td><img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3575702/a517a7dc-81ba-8419-51d3-dd2ab7c2d2f1.png" width="400"></td>
  </tr>
  <tr>
    <td>2</td>
    <td>
    APIとサービスを検索欄に「Drive API」と入力します。
    </td>
    <td><img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3575702/85ba55cb-b2b7-f9b3-a110-dff9285cb542.png" width="400"></td>
  </tr>
  <tr>
    <td>3</td>
    <td>
    「Google Drive API」をクリックします。
    </td>
    <td><img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3575702/5d6f5784-3f7c-e1b5-ef85-9753848bdebb.png" width="400"></td>
  </tr>
  <tr>
    <td>4</td>
    <td>
    「有効にする」をクリックします。
    </td>
    <td><img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3575702/7afff2f9-aad5-4e1a-0333-b9b924a2b0a9.png" width="400"></td>
  </tr>
</table>
:::

## 実行結果の確認
設定および再デプロイを終えたのちに、**プログラムを実行**してみましょう。もちろん、LINE bot等から実行いただいて構いません。

<table>
  <tr>
    <th>№</td>
    <th>確認手順</td>
    <th>イメージ</td>
  </tr>
  <tr>
    <td>1</td>
    <td>
    GCPの左上のバーガーメニューから「ロギング　＞　ログエクスプローラ」をクリックします。
    </td>
    <td><img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3575702/abf81855-90b9-91ee-c396-d964c5cd75b0.png" width="400"></td>
  </tr>
  <tr>
    <td>2</td>
    <td>
    ログビューワーにうつり、出力されたログを確認することができます。<br>※デフォルトは直近1時間のログとなっているため、例えば<B>1週間、ログレベルを警告以上</b>等にしたりして検索フィルタを設定しましょう。
    </td>
    <td><img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3575702/c550dc26-e5be-d629-72b1-0185636e5bba.png" width="400"></td>
  </tr>
</table>

:::note info
ログエクスプローラはバーガーメニューの中でだいぶ下の方にあるため、以下のように**ピン留めする**ことをお勧めします。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3575702/0434b764-c07e-d0d7-cdbc-2378cd5975c3.png" width="400">
:::

## 使用量の確認
ログに関しては月当たり50GiB（ギビバイト）は無料であり、これを超えることは基本的にあり得ないと述べましたが、どの程度使用しているかを確認できた方がもちろん良いですよね。

<table>
  <tr>
    <th>№</td>
    <th>確認手順</td>
    <th>イメージ</td>
  </tr>
  <tr>
    <td>1</td>
    <td>
    GCPの左上のバーガーメニューから「ロギング　＞　ログストレージ」をクリックします。<br/>
    ※すでにロギングメニュー画面の場合は、左メニューに「ログストレージ」が表示されています。
    </td>
    <td><img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3575702/bca14f33-498c-7301-0188-786d05a5c845.png" width="400"></td>
  </tr>
  <tr>
    <td>2</td>
    <td>
    ログストレージの使用量を確認できます。
    </td>
    <td><img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3575702/65e93618-969c-8548-fb75-4a5064eff71a.png" width="400"></td>
  </tr>
</table>

# おわりに
お疲れ様でした。
第21回は少々**緊急企画的**に「GAS×GCP連携によるログの可視化でデバッグを容易にしよう！」と題して、**GASとGCPを連携し、GAS単独運用では確認不可のログを出力するTips**をお伝えしました。GASは非常に便利ですが、Webアプリケーション運用を行っていると、「なんでログが見られないんだ！！！」という場面に出くわすことがあります。そんな時は、今回のTipsを参考にGCPと連携し、GASをさらに活用し楽しんでいきましょう！！
記事を読んで、「良いな」や「今後に期待できる！」と感じて頂けたら**いいね**や**フォロー**、**コメント**いただけると幸いです。それではまた次回をお楽しみに！

:::note info
ブログではより細かく紹介していますので、ぜひ<a href="https://gas-4u.com/" target="_blank">こちらもアクセス！！</a>
:::