【GAS】Web APIを取得する方法

GASAPI,getContentText,UrlFetchApp,UrlFetchApp.fetch

Google Apps Script(GAS)でWeb APIを取得する方法解説します。いくつくかのAPI連携でサンプルコードも公開しているのでぜひご覧ください。

APIとは

APIとは(Application Programming Interface アプリケーションプログラミングインタフェース)の略で、プログラム同士をつなぐインターフェースを指します。

APIそのものについてはたくさん記事があるので詳細の説明は省きますが、要は一つのプログラムで実現が難しい処理、作業、アウトプット等を、既存の他プログラムとつなぐことで実現できる仕組みのことです。

GASはだれでも簡単に扱えますが、その分複雑な処理が難しかったり、機能制約によりGAS単体では実現できないことが多々あります。API連携でそれらの機能を補ってくれるプログラムとつながることで、GASを使って実現したいことの幅が大きく広がります。

どのようなWeb APIがあるか

世間的によく知られているサービスもAPIを公開していることが多く、連携することで独自ツールを作れたり作業効率を大幅に向上させることが可能となっています。

Yahoo! API

Yahoo! JAPANのIDを持っていれば誰でも利用可能です。ショッピング、テキスト解析、地図などのWeb APIを公開してして、Yahoo!のさまざまなサービスをさらに便利に使うことが可能になっています。

Twitter API

API連携をすることで、例えば、特定のキーワードを含むツイートに対して自動でいいね!したり、またツイート履歴を分析したりできます。

Amazon API

大口出品車向けのMWS(Marketplace Web Service) APIと、主にアフィリエイター向けのProduct Advertising APIの2種類があります。Amazon APIを活用することで独自のリサーチツール、出品・在庫・受注管理ツールなどを自前で作ることも実現可能となっています。

LINE Messaging API

LINEのメッセージ機能を利用できるAPIです。LINEのトーク画面を使った特定のユーザーに限定した双方向のコミュニケーションや、外部サービスと接続・連携したアカウントの作成・開発が可能となります。

GASでWeb APIを取得する手順

それでは郵便番号検索APIを題材に手順を解説します。基本的な手順は同じなので参考にしてみてください。

アクセス条件の確認

まずはどのようにAPIを利用するのか、API連携によって得られる情報の確認を行います。APIによっては利用登録をしてキーの発行を行わなければならないサービスも多いので解説記事や公式ドキュメントを確認しておきましょう。

リクエストURLの確認

http://zipcloud.ibsnet.co.jp/doc/api

郵便番号検索APIでは、このURLにリクエストパラメータを加え、リクエストを行います。GASのHTTPリクエストはUrlFetchAppを使います。

リクエストパラメータの確認

パラメータ名項目名必須説明
zipcode郵便番号7桁の数字。ハイフン付きでも可。完全一致検索。
callbackコールバック関数名JSONPとして出力する際のコールバック関数名。UTF-8でURLエンコードした文字列。
limit最大件数同一の郵便番号で複数件のデータが存在する場合に返される件数の上限値(数字) ※デフォルト:20

(例)郵便番号「7830060」で検索する場合
https://zipcloud.ibsnet.co.jp/api/search?zipcode=7830060

レスポンスフィールド

フィールド名項目名備考
statusステータス正常時は 200、エラー発生時にはエラーコードが返される。
messageメッセージエラー発生時に、エラーの内容が返される。
results--- 検索結果が複数存在する場合は、以下の項目が配列として返される ---
zipcode郵便番号7桁の郵便番号。ハイフンなし。
prefcode都道府県コードJIS X 0401 に定められた2桁の都道府県コード。
address1都道府県名
address2市区町村名
address3町域名
kana1都道府県名カナ
kana2市区町村名カナ
kana3町域名カナ

サンプルコード

function myFunction() {
  const zipcode = '7830060'; // 対象となる郵便番号の指定
  const url = 'https://zipcloud.ibsnet.co.jp/api/search?zipcode=' + zipcode;

  const response = UrlFetchApp.fetch(url);
  const content = response.getContentText();
  const json = JSON.parse(content);
  const result = json.results[0];

  console.log(result);
  console.log(result.address1);
}
実行結果


//console.log(result);
{ address1: '高知県’, address2: '南国市’, address3: '蛍が丘’, kana1: 'コウチケン’, kana2: 'ナンコクシ’, kana3: 'ホタルガオカ’, prefcode: ’39’, zipcode: '7830060’ }

//console.log(result.address1);
高知県

GASで取得できるいろいろなWeb API

形態素解析API(gooラボ)

概要

日本語文字列を、形態素と呼ばれる単語単位に分割します。

例えば「この商品はデザインが斬新だ」という文字列は、「この」「商品」「は」「デザイン」「が」「斬新」「だ」というように分割されます。

利用登録が必要ですが、日本語を与えると形態素になって返ってくるというシンプルなAPIなので、APIの練習としておすすめです。

サンプルコード

function myFunction() {

  const sentence = '吾輩は猫である。 名前はまだない。 どこで生れたか頓(とん)と見当がつかぬ。';

  const apiUrl = 'https://labs.goo.ne.jp/api/morph';
  const appId = '[登録後に取得できるAPI ID]';

  //goo形態素解析APIにパラメータをセットし、HTTP POSTするためのoptionsを設定
  var payload = {
    'app_id' : appId,
    'sentence' : sentence
  };
  var options = {
    'method' : 'post',
    'payload' : payload
  };

  //goo形態素解析APIにHTTP POSTでリクエストし、JSONの結果をパース
  var response = UrlFetchApp.fetch(apiUrl,options).getContentText('utf-8');
  var json = JSON.parse(response);
  var word_list = json['word_list']

  //goo形態素解析APIで処理した結果をログ出力する
  console.log(word_list);

}
実行結果

[ [ [ '吾輩’, '名詞’, 'ワガハイ’ ],
[ 'は’, '連用助詞’, 'ハ’ ],
[ '猫’, '名詞’, 'ネコ’ ],
[ 'で’, '判定詞’, 'デ’ ],
[ 'あ’, '動詞語幹’, 'ア’ ],
[ 'る’, '動詞接尾辞’, 'ル’ ],
[ '。’, '句点’, " ] ],
[ [ '名前’, '名詞’, 'ナマエ’ ],
[ 'は’, '連用助詞’, 'ハ’ ],
[ 'まだ’, '連用詞’, 'マダ’ ],
[ 'な’, '形容詞語幹’, 'ナ’ ],
[ 'い’, '形容詞接尾辞’, 'イ’ ],
[ '。’, '句点’, " ] ],
[ [ 'どこ’, '名詞’, 'ドコ’ ],
[ 'で’, '格助詞’, 'デ’ ],
[ '生れ’, '動詞語幹’, 'ウマレ’ ],
[ 'た’, '動詞接尾辞’, 'タ’ ],
[ 'か’, '接続接尾辞’, 'カ’ ],
[ '頓’, 'Kanji’, 'トン’ ],
[ '(’, '括弧’, " ],
[ 'とん’, 'Kana’, 'トン’ ],
[ ')’, '括弧’, " ],
[ 'と’, '格助詞’, 'ト’ ],
[ '見当’, '名詞’, 'ケントウ’ ],
[ 'が’, '格助詞’, 'ガ’ ],
[ 'つ’, '動詞語幹’, 'ツ’ ],
[ 'か’, '動詞活用語尾’, 'カ’ ],
[ 'ぬ’, '動詞接尾辞’, 'ヌ’ ],
[ '。’, '句点’, " ] ]]

形態素解析できました。

まとめ

Google Apps Script(GAS)でAPI連携する手順をサンプルコードとともに解説しました。

  • APIとは「アプリケーションプログラミングインタフェース」のこと
  • API連携で他プログラムとつなぐことで、GAS単体では難しい処理でも実現できる幅を広げられる
  • Yahoo!、Twitter、LINE等、よく使うサービスもAPI公開しており、独自ツール開発や利便性を上げられる
  • 利用には登録してAPI IDが必要な場合がある
  • 楽しい

ぜひ参考にしてみてください!

この記事を書いた人

てつお
広告代理店出身、事業会社でWebマーケティングや開発の仕事をしている26歳です。プロフィール詳細はこちら
■Google広告認定資格|Google アナリティクス個人認定資格(GAIQ)|TOEIC920点