インフラジスティックス・ジャパン株式会社Blog

インフラジスティックス・ジャパン株式会社のチームメンバーが技術トレンド、製品Tips、サポート情報からライセンス、日々の業務から感じることなど、さまざまなトピックについてお伝えするBlogです。

スプレッドシートとGAS(Google Apps Script)でAPIを公開し、Angularアプリをローコードで爆速作成する

こんにちは!ソリューションコンサルタントの滝元です。

今回はタイトルのとおり、スプレッドシートと GAS(Google Apps Script) で API を公開していきます。 そしてその API に接続する Angular アプリケーションをローコードで作成していきます!

環境の用意、データの用意をすぐに始められる構成にしたので Angular の PoC を行いたい方必見です!

GAS(Google Apps Script)とは

Google Apps Script(GAS)は、Google が提供する各種サービスの自動化や連携を行うためのローコード開発ツールです。 GAS を使用することで、Gmail、カレンダー、Googleスプレッドシート、Google ドライブなど、Google が提供するさまざまなサービスを効果的に活用し、処理を自動化したり、複数のサービスを統合したりできます。

スプレッドシートの設定

スプレッドシートを新規作成し、画像のようにデータを用意します。 1行目にプロパティとして、 id name nameKana email isContacted を設定しました。 データは画像のようにモックデータを用意しています。

GASの設定

スプレッドシートのメニューの拡張機能> Apps Script からこのスプレッドシートに付属するスクリプトを開きます。

エディタが開かれるのですが、こちらでGASのコーディングしていくことができます。

※Google アカウントのセキュリティ設定が必要な場合があります。 詳細は下記リンクを参照

安全性の低いアプリと Google アカウント - Google アカウント ヘルプ

スプレッドシートのデータを Json 形式にする

現在のシートから1行目をプロパティとして全行を配列で返却する関数です。

function sheetToJson() {
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  const data = sheet.getDataRange().getValues();
  const headers = data[0];
  let jsonData = [];

  for (let i = 1; i < data.length; i++) {
    const row = data[i];
    let obj = {};

    for (let j = 0; j < headers.length; j++) {
      obj[headers[j]] = row[j];
    }

    jsonData.push(obj);
  }

  return jsonData;
}

作成した Json データを返却する API を作成する

sheetToJson を使った doGet 関数を作成します。 doGet と命名することでデプロイ後、GET リクエストに割り当てられます。

function doGet(e) {
  const jsonData = sheetToJson()
  return ContentService.createTextOutput(JSON.stringify(jsonData))
    .setMimeType(ContentService.MimeType.JSON);
}
  • ContentService.createTextOutput(JSON.stringify(jsonData)): ContentServiceはGoogle Apps Scriptが提供するサービスの一つで、HTTPレスポンスを生成するために使用されます。 createTextOutput()メソッドは、指定された文字列を含むテキスト出力オブジェクトを生成します。この場合、スプレッドシートから取得したデータをJSON文字列に変換したもの(JSON.stringify(jsonData))を引数として与えています。
  • .setMimeType(ContentService.MimeType.JSON): 生成されたテキスト出力オブジェクトのMIMEタイプを設定するためのメソッドです。 ContentService.MimeType.JSONは、このレスポンスのMIMEタイプとしてapplication/jsonを指定するための定数です。これにより、レスポンスがJSONデータであることを明示的に示すことができます。

APIの公開

デプロイ > 新しいデプロイ

種類の選択 > ウェブアプリ

アクセスできるユーザーは「全員」と設定します。

デプロイが成功すると、公開されたURLが表示されます。

URLをブラウザで表示すると、スプレッドシートのJsonデータが帰ってくることが確認できました!

ローコードでAngularアプリを作成

WYSIWYGエディター「AppBuilder」を使用して、先程作成したAPIに接続したAngularアプリケーションを作成していきましょう。

App Builderを開き、テンプレートから新しいアプリケーションを作成する

App Builder を開き、「新しいアプリ」を選択します。「テンプレート」セクションからお好みのレイアウトを選択しましょう。

Grid を画面に配置する

テンプレートの不要なページを削除し、タイトルを修正しました。 左のコンポーネントリストから Grid をドラッグアンドドロップで配置します。 初期値は App Builder が用意したモックデータが表示されています。

GAS API と接続

公開された URL を指定することによって App Builder 上で接続を行うことができます。 サイドバーのデータからデータソースを追加していきます。

URLの追加を選択

先程のURLを追加

プロパティ名、データの型が自動で認識されます。

Grid に GAS API のデータをバインド

Grid を選択し、右のメニューの Data に先程追加したデータソースを設定

画面のデータがスプレッドシートと同じものになることを確認できました!

Grid に いろいろな機能を追加

Grid を選択中、右のメニューの 「機能」からお好きな機能を追加することが可能となっています。 今回は下記機能を追加してみました。 - Row Selection (行選択) - Exportig (エクスポート)

アプリケーションのプレビュー

右上の ▶ をクリックするとプレビューモードに変わります。 先程接続したGAS APIのデータが表示されていて、設定した機能も有効になっていることを確認しましょう。

Angular アプリケーションとしてローカルで実行

アプリケーションをダウンロード

プレビューでアプリケーションを確認したらアプリケーションをダウンロードします。 編集画面に戻り、 右上の「公開」から ZIP のダウンロードをクリックします。 ※プラットフォームが Angular になっていることを確認してください。

アプリケーションの実行

ダウンロードしたZIP ファイルを解凍し、お好きな IDE・エディタで開きます。 今回は Visual Studio Code で開きます。

ターミナルで下記コマンドを実行します。

npm i
npm start

ブラウザが立ち上がり、先程 App Builder で作成したアプリケーションが動くことを確認できました!

まとめ

新しいアプリケーションや新しい機能の実装を検討するときに、データソースからサーバーまで環境を用意するのは大変です。 今回ご紹介したようにスプレッドシートと GAS を組み合わせればすぐにデータを用意し、 API を公開することが可能です。

また、フロントエンドについても App Builder を活用することで API と接続した高機能なアプリケーションを短時間で作成することができます。 トライアルもできるのでぜひお試しください!

jp.infragistics.com

GASにはまだまだ強力な機能があります。 - メール送信 - トリガー機能 - フォームとの連携 - その他多数 またブログで紹介していきます!