• トップ
  • ブログ一覧
  • 【GAS】Google App ScriptでAPIからGoogle スプレッドシートにデータを書き込む
  • 【GAS】Google App ScriptでAPIからGoogle スプレッドシートにデータを書き込む

    はじめに

    スマホゲームの使用状況計測の結果をWebアプリからCSVでダウンロードし、Google スプレッドシートに貼り付けて分析するという業務があったが、
    データ量が膨大で毎日2〜3時間かかっているという話を聞き、Google App Scriptを使って自動化したのでその時にやったことを記載していく。

    Googleスプレッドシートにスクリプトを作成

    まずはスプシを用意し、拡張機能 -> App Scriptを選択。
    そうするとスプシに紐づいたGASが作成される。

    GASでAPIからデータを取得

    GASにはUrlFetchAppクラスが用意されており、APIとの通信やウェブスクレイピングができるようになっている。
    URLのみで取得できるが、今回は認証キーが必要なAPIだったのでHTTPリクエストのヘッダーにセットして第2引数にわたす必要があった。

    1var url = 'APIのURL'
    2
    3var headers = {
    4	'Authorization': 'トークンキー'
    5};
    6
    7var options = {
    8	'method' : 'GET',
    9	'headers' : headers,
    10};
    11
    12var response = UrlFetchApp.fetch(url, options);

    受け取ったレスポンスをJSONに変換し、スプシに書き込みやすい形へ成形

    UrlFetchApp.fetrchから受け取れるのはHTTPResponseクラスになっており、扱いやすいようにJSONに変換する。
    さらにそれをスプシに書き込むのに適した形に成形する。

    1var resJson = JSON.parse(response.getContentText());
    2
    3// JSONから2次元配列へ成形
    4var values = res.map(content => {
    5	return [
    6		content.title,
    7		content.id,
    8		...
    9	]
    10  });

    書き込むスプシを取得し、データを書き込む

    1var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
    2
    3// A1から配列のサイズ分の範囲を指定し、データを書き込む
    4sheet.getRange(1, 1, values.length, values[0].length).setValues(values);

    トリガーをセットする

    左のメニューからトリガーを選択し、トリガーを追加する。
    スプシの起動時や編集時の他に、何日おき、何時間おきなど実行するタイミングを設定できる。
    今回は開いた時に実行されるようにトリガーを設定。

    まとめ

    今回はスプシを開いた際に、APIからデータを取得し、スプシに書き込む部分をGASで自動化した。
    かなり簡略化したので、他のテクニックについては別の機会に紹介したい。

    ライトコードでは、エンジニアを積極採用中!

    ライトコードでは、エンジニアを積極採用しています!社長と一杯しながらお話しする機会もご用意しております。そのほかカジュアル面談等もございますので、くわしくは採用情報をご確認ください。

    採用情報へ

    おすすめ記事

    エンジニア大募集中!

    ライトコードでは、エンジニアを積極採用中です。

    特に、WEBエンジニアとモバイルエンジニアは是非ご応募お待ちしております!

    また、フリーランスエンジニア様も大募集中です。

    background