【GAS JSON操作完全ガイド】Google Apps Scriptで学ぶJSON変換・設計・API連携の実践テクニック
旅行先でカフェに立ち寄りながらコードを書くことがありますが、 最近の業務自動化やAPI連携では「JSONを自在に扱えるかどうか」が生産性を大きく左右すると感じています。
Google Apps Script(GAS)を使った開発でも、JSON操作は避けて通れません。 スプレッドシートのデータ加工からAPI連携、レポート作成まで、 あらゆる場面でJSONが登場します。
この記事では単なる構文説明ではなく、 実務で使える「JSON設計」の考え方まで含めて詳しく解説します。
JSON操作とは?本質を理解しよう
まず最初に押さえておきたいのは、 JSONは単なるデータ形式ではないということです。
JSON操作の本質は、 「データ構造を自由に変換する技術」 にあります。
API ↓ JSON化 ↓ 加工・分析 ↓ 出力
GASの実務では以下のような流れが頻繁に発生します。
- APIからデータ取得
- JSON形式へ変換
- 条件抽出・集計
- スプレッドシートへ出力
- メール送信やレポート生成
つまりJSONは、異なるシステム同士をつなぐ共通言語のような存在です。
GAS JSON操作のレベル別学習ロードマップ
初級:JSONを理解する
- JSON.parse()
- JSON.stringify()
- オブジェクトアクセス
- 配列操作
中級:データ加工を覚える
- map()
- filter()
- reduce()
- データ変換
上級:設計まで考える
- JSONスキーマ設計
- ネスト構造管理
- API設計
- データパイプライン構築
多くの人が中級で止まりますが、 実務で差が付くのは「JSON構造を設計できる人」です。
JSON設計が重要な理由
悪い例:配列依存
["鈴木",30,"営業"]
見た瞬間に「30は年齢?勤続年数?」と迷います。
良い例:JSON形式
{
name:"鈴木",
age:30,
department:"営業"
}
こちらは意味が明確です。
- 可読性が高い
- 保守しやすい
- 拡張しやすい
- バグが減る
実務ではコードを書くよりも、 データ構造を設計する時間の方が長くなることも珍しくありません。
実務で頻出するJSON操作パターン
1. データの正規化(Normalize)
まずは型を揃えます。
const normalized = data.map(row => ({
name: row[0],
age: Number(row[1]),
date: new Date(row[2])
}));
文字列のまま扱うと後で思わぬ不具合を生むため、 最初に型変換するのが鉄則です。
2. 条件抽出(filter)
const result = users.filter(
user => user.age >= 30
);
必要なデータだけを残します。
3. データ変換(map)
const result = users.map(user => ({
...user,
age2x: user.age * 2
}));
4. 集計(reduce)
const total = users.reduce(
(acc,user) => acc + user.age,
0
);
この4つだけで多くの業務処理が実現できます。
ネストJSONを扱う方法
APIレスポンスではネスト構造が頻繁に登場します。
{
departments:[
{
name:"営業",
users:[
{name:"鈴木",sales:100},
{name:"田中",sales:200}
]
}
]
}
部門ごとの売上を集計する場合はreduceを組み合わせます。
const total =
data.departments.reduce((acc,dept)=>{
const sum =
dept.users.reduce(
(a,u)=>a+u.sales,
0
);
return acc + sum;
},0);
ネスト構造を理解すると、 複雑なAPIデータも怖くなくなります。
JSONフラット化が分析で重要な理由
BIツールやスプレッドシート分析では、 ネスト構造よりも一覧形式が好まれます。
const flat =
data.departments.flatMap(
dept =>
dept.users.map(user => ({
dept: dept.name,
...user
}))
);
結果は次のようになります。
[
{
dept:"営業",
name:"鈴木",
sales:100
}
]
この形に変換しておくと、 集計やグラフ作成が圧倒的に楽になります。
JSONパイプライン設計で保守性を上げる
大規模なGASでは処理を関数に分割します。
const result = data
.map(normalize)
.filter(condition)
.map(transform)
.reduce(grouping,{});
旅行の計画を立てるときも、 目的地・交通手段・宿泊先を整理すると楽ですよね。 JSON処理も同じで、 役割ごとに整理することで管理しやすくなります。
GASで使えるJSON操作テンプレート
実務では以下の流れが非常によく使われます。
- スプレッドシート取得
- JSON化
- データ加工
- 結果出力
このパターンを覚えるだけでも、 業務自動化の幅は大きく広がります。
JSON設計で失敗しないためのポイント
意味のあるキー名を付ける
{
id:"001",
name:"鈴木",
department:"営業"
}
避けたい設計
{
a:"鈴木",
b:100,
c:"営業"
}
後から見返したときに意味が分からなくなります。
ネストを深くしすぎない
data.a.b.c.d.e
このような構造は保守性を大きく下げます。
JSON操作でよくあるミス
- undefinedエラー
- 型変換忘れ
- ネストの深掘りしすぎ
- 都度JSON変換による性能低下
特に以下は初心者がよくハマります。
"30" + 10
結果は40ではなく3010になります。
数値計算では必ずNumber()を使いましょう。
まとめ|JSON操作を極めるとGAS開発が一段上がる
JSON操作の本質は、 単なるデータ保存ではありません。
- 構造化する
- 変換する
- 集計する
- 出力する
この流れを自在に扱えるようになると、 API連携、業務自動化、データ分析の難易度が大きく下がります。
初心者は「配列処理」から始め、 中級者は「オブジェクト処理」、 そして上級者は「JSON構造を設計する力」を身につけることを目指しましょう。
JSONを制する者は、GASによる業務システム構築を制すると言っても過言ではありません。







0 件のコメント:
コメントを投稿