やまちゃん(エンジニア)
【GAS】Google App ScriptでAPIからGoogle スプレッドシートにデータを書き込む
やまちゃん(エンジニア)
2024.11.22
IT技術
はじめに
スマホゲームの使用状況計測の結果を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で自動化した。
かなり簡略化したので、他のテクニックについては別の機会に紹介したい。
ライトコードでは、エンジニアを積極採用中!
ライトコードでは、エンジニアを積極採用しています!社長と一杯しながらお話しする機会もご用意しております。そのほかカジュアル面談等もございますので、くわしくは採用情報をご確認ください。
採用情報へ