【初心者向けGAS】Google Apps ScriptでWeb APIを活用するための基礎知識


internet

photo credit: Skley Dr. Internet 133/366 via photopin (license)


みなさん、こんにちは!
タカハシ(@ntakahashi0505)です。

Google Apps Script初心者向けの題材として名言Botの作り方についてお伝えしています。

前回の記事はコチラです。

【初心者向けGAS】スプレッドシートのセル範囲をクリアするいくつかの方法
Google Apps ScriptでBotを作りながらその基本を学んでいくシリーズです。今回はスプレッドシートのセル範囲をクリアする方法としてclearメソッド、clearContentメソッドを紹介します。

スプレッドシートのセル範囲をクリアする方法についてお伝えしました。

…しかし、もうそろそろ読者の皆さんはこう思っていますよね。

さっさとBotで通知させて!!

そうですよね、これまでのスクリプトはBot通知の代わりに、ひたすらconsole.log使ってましたからね…

さあ、いよいよBot通知していきますよ。

題材として、我らがビジネスチャットの雄、「Chatwork」を使います。そして、そのためにライブラリ「ChatWorkClient for Google Apps Script」を使います。

そして、そのための準備と前提知識がいくつか必要です。

ということで、今回はまずChatwork APIを活用するために必要な知識として、Web APIとは何か、HTTP通信とは何か、またそれをGoogle Apps Scriptで実現するためのUrlFetchサービスについてお伝えします。

では、行ってみましょう!

スポンサーリンク

前回のおさらいと目標の整理

まず、やりたいことを整理しておきましょう。

以下のようなスプレッドシートがあります。

名言botのスプレッドシート

そして、前回までで作成したスクリプトがコチラです。

function myFunction() {
  const sheet = SpreadsheetApp.getActiveSheet(); 
  const lastRow = sheet.getLastRow();
  
  for(let i = 2; i <= lastRow; i++) {
    if(!sheet.getRange(i, 4).getValue()){ 
      console.log(sheet.getRange(i, 1).getValue());
      sheet.getRange(i, 4).setValue(true);
      
      if(i >= lastRow) {
        sheet.getRange(2, 4, lastRow - 1).clearContent();
      }
      break;
    }
  }
}

ざっくり解説すると、実行のたびに、D列にTRUEとない名言を上から順に探して見つけたら、その名言をログ出力して、D列にTRUEと記入するというものです。

この7行目のconsole.logを通知の代わりに使っていたのですが、この部分をChatworkへの送信に変えていきたいというのが、目下の目標となります。

GASから外部のサービスを操作するためには

スプレッドシートであればG Suiteのサービスですから、「SpreadsheetAppなんちゃら…」という命令を使うことで簡単に操作することができました。

ですが、今回メッセージを送りたいChatworkはGoogleのサービスではありませんので、そう簡単に操作することはできません。

そんなときに、使うテクニックとして「Web API」というものがあります。

APIとは

まず、APIの部分を説明しましょう。

APIというのは、「Application Programing Interface」のことで

あるコンピュータプログラム(ソフトウェア)の機能や管理するデータなどを、外部の他のプログラムから呼び出して利用するための手順やデータ形式などを定めた規約のこと。
引用IT用語辞典

Chatworkもそうですが、Twitter、Slack、Trello、Facebook、楽天、Yahoo、Amazon…と様々なサービスがその一部の機能を外部から操作するための「API」を用意してくれています。

HTTP通信とは

それで、Web APIとは何かということなのですが、HTTP通信を利用したAPIのことです。

上記のサービス群はすべてインターネットで利用しますよね。

そして、そのインターネットですが、HTTP通信という方式での通信でデータのやり取りがなされているわけです。

例えば、我々がブラウザにURLを入力して、とあるWebサイトのページを閲覧することを考えてみましょう。

手順としては以下のようなことが行われています。

HTTP通信について

  1. ブラウザから目的のWebサイトのデータを持っているWebサーバーに「これこれのページのデータが欲しい」といった内容を含むリクエストを送信(HTTPリクエスト)
  2. Webサーバーはリクエストを受け取ったら、Webページのデータなどを含むレスポンスとして返信(HTTPレスポンス)
  3. ブラウザはそのデータを解析してWebページとして表示

この時のやりとりの方式が「HTTP」という方式でやられていて、それをHTTP通信というわけです。

リクエストメソッドとは

HTTPリクエストの送り方にはいくつかの種類がありまして、それをリクエストメソッド(または単にメソッド)と言います。

いくつかの種類がありますが、ひとまず二つだけ覚えてください。

  • GETリクエスト:「何かをくださーい」と、データを要求するときのリクエスト
  • POSTリクエスト:「これあげまーす」と、コチラ側のデータを送信するときのリクエスト

一般的に、ブラウザでURLを打ち込んでWebページのデータを要求するときのメソッドはGETリクエストになります。

また、Webフォームで名前とかメールアドレスを入力して「送信」ボタンを押したときのメソッドはPOSTになります。

Web APIとは

それで、このHTTP通信のやり方を利用して、外部のサービスを操作するためのインターフェースがWeb APIとなります。

APIを用意しているサービス側で、何らかの操作を受け付けるときのURLが決められていて、そのURLにHTTPリクエストを送ると、そのサービスを操作したり、何らかのデータをHTTPレスポンスとして戻してくれたりするのです。

例えば、Chatworkでいうと、自分のアカウントの情報を取得したいときには

https://api.chatwork.com/v2/me

というURLにGETリクエストを行います。

また、特定のグループチャットにメッセージを送りたいときには

https://api.chatwork.com/v2/rooms/{room_id}/messages

というURLにパラメータを含めたPOSTのリクエストを行います。上記「{room_id}」というのは、グループチャットごとに割り当てられている「ルームID」を指定します。

GASでHTTPリクエストを行う

それで、このWeb APIを利用するためには、「HTTPリクエストを送る」という操作をする必要があるわけですが、GASにはそのための機能が用意されています。

それを提供するのがUrlFetchサービスのfetchメソッドになります。

GASのurlfetchサービスについて

書式は以下のとおりです。

UrlFetchApp.fetch(URL[, パラメータ])

リクエストURLと、必要に応じてパラメータを付与します。

パラメータには

  • header:ヘッダー
  • method:メソッド(デフォルトはGET)
  • payload:ペイロード(POSTの際のボディなど)

などをオブジェクト形式で指定します。

Chatworkにメッセージ送信をする場合

Chatworkにメッセージを送信する場合、上記のメッセージを送りたいときのURLを使うのですが、そもそもパラメータのheaderに「APIトークン」という情報を付与する必要があります。

また、POSTリクエストになりますのでmethodも指定しますし、メッセージの内容を送らないといけないので、それをpayloadに指定する必要もあります。

ということで、「素」でやろうとすると、正直ややこしいんですよね…

それをなんとかしてくれる「ライブラリ」がありますので、それについて次回以降紹介していきます。

まとめ

以上、Google Apps ScriptでWeb APIを活用するための基礎知識についてお伝えしました。

APIとは何か、HTTP通信とは何か、またGASでHTTPリクエストを行うためのUrlFetchサービスのfetchメソッドについて解説をしてきました。

ただ、前述の通り、これを素のままでやろうとすると、色んなパラメータを設定しなくてはいけないのでちょっと面倒…

それを解決してくれるのがライブラリということになります。

その点について、次回解説をしていきますよ。

【初心者向けGAS】面倒なことはライブラリに任せよう!その概要と追加の方法
初心者向けGoogle Apps ScriptのシリーズとしてチャットワークのBotの作り方についてお伝えしています。今回はライブラリとは何か、またその追加の仕方についてお伝えしていきます。

どうぞお楽しみに!

連載目次:超初心者向けGASでBotを作りながら基礎を学ぶ

Google Apps Script(GAS)をはじめるためのメリットは山程ありますが、何を作ったらいいの?と悩んでしまうこともありますよね。そんな時に、おすすめしたいのが「Bot」の作成です。このシリーズでは、超初心者向けにGASでBotを作る方法を題材としながら、GASプログラミングの一通りの流れと書き方について学んでいきます。
  1. 【初心者向けGAS】本当の最初の一歩!スクリプトエディタでプロジェクトを開く
  2. 【初心者向けGAS】はじめてのスクリプトを作成し、保存し、実行する
  3. 【初心者向けGAS】プログラミングに必須の変数&定数の使い方とデータ型について
  4. 【初心者向けGAS】ログを表示するconsole.logの使い方とテンプレート文字列
  5. 【初心者向けGAS】スクリプト実行時の「承認」でびっくりしないために
  6. 【初心者向けGAS】Spreadsheetサービスの「オブジェクト」の基礎の基礎を知ろう
  7. 【初心者向けGAS】スプレッドシートのシートを取得する2つの方法
  8. 【初心者向けGAS】スプレッドシートのセル・セル範囲とその値を取得する方法
  9. 【初心者向けGAS】for文を使ったスプレッドシートの繰り返しの超基本
  10. 【初心者向けGAS】条件分岐をするif文の使い方の超基本
  11. 【初心者向けGAS】スプレッドシートのセルに値を入力する基礎の基礎
  12. 【初心者向けGAS】条件に応じてループを制御する2つの方法~break文とwhile文~
  13. 【初心者向けGAS】スプレッドシートのセル範囲を行数・列数を使って取得する
  14. 【初心者向けGAS】スプレッドシートのセル範囲をクリアするいくつかの方法
  15. 【初心者向けGAS】Google Apps ScriptでWeb APIを活用するための基礎知識
  16. 【初心者向けGAS】面倒なことはライブラリに任せよう!その概要と追加の方法
  17. 【初心者向けGAS】Chatworkのマイチャットにメッセージを送る最も簡単な例
  18. 【初心者向けGAS】Google Apps Scriptで別の関数を呼び出すfunctionの書き方
  19. 【初心者向けGAS】時限式のイベントトリガーを設置して決まった時刻にBotを送信する方法
  20. 【初心者向けGAS】プロパティストアの概要とスクリプトプロパティの編集方法
  21. 【初心者向けGAS】スクリプトプロパティを操作してそのデータを取り出す方法
  22. 【初心者向けGAS】スプレッドシートのセル範囲の値を二次元配列として取得して取り扱う方法
  23. 【初心者向けGAS】Chatworkのメッセージ記法でBot送信するメッセージを装飾する方法
  24. 【初心者向けGAS】Google Apps Scriptのドキュメンテーションコメントの書き方

タイトルとURLをコピーしました