【GAS JSON操作完全ガイド】Google Apps ScriptでJSON変換・API連携・データ加工を実務レベルで学ぶ
Google Apps Script(GAS)を触り始めた頃、配列は扱えてもJSONになった瞬間に急に難しく感じた経験はありませんか。
実はJSONは単なるデータ形式ではありません。
「複数のサービスをつなぎ、データを自在に変形するための共通言語」 です。
Gmail、Google Drive、スプレッドシート、外部API。実務のGAS開発ではJSONを避けて通れません。
今回は旅行先のカフェでGASを書いている友達に説明するような感覚で、JSON操作を「構文」ではなく設計レベルまで解説します。
JSON操作とは?GASで重要な理由
まず結論から言うと、
JSON操作 = データ構造を自由に変換する技術
GASの実務では次のような流れが頻繁に発生します。
API取得 ↓ JSON化 ↓ 加工・集計・分析 ↓ スプレッドシート出力
例えば営業管理システムから取得したAPIデータを整形し、Googleスプレッドシートへ自動出力する。
これができるだけでGASは単なる自動化ツールではなく、業務システムの中核になります。
GAS JSON操作のレベル別ロードマップ
初級:JSONの基本を理解する
- JSON.parse()
- JSON.stringify()
- オブジェクトアクセス(obj.key)
ここでは「JSONとは何か」を理解する段階です。
中級:データ加工を覚える
- map()
- filter()
- reduce()
- データ構造変換
この段階から実務感が一気に出てきます。
上級:JSON設計を考える
- ネスト構造管理
- スキーマ設計
- API連携設計
- 変換パイプライン構築
実務で差が出るのはここです。
JSON設計の考え方|保守しやすいデータ構造を作る
悪い例(配列依存)
["鈴木",30,"営業"]
一見シンプルですが、後から見ると「30って年齢?売上?」と迷います。
良い例(JSON構造)
{
name:"鈴木",
age:30,
department:"営業"
}
メリットは圧倒的です。
- 読みやすい
- 拡張しやすい
- バグが減る
- チーム開発でも理解しやすい
上級者ほど「処理」ではなく構造設計に時間を使います。
GAS JSON操作の基本パターン4選
① Normalize(正規化)
まずデータ型を揃えます。
const normalized = data.map(row => ({
name: row[0],
age: Number(row[1]),
date: new Date(row[2])
}));
文字列の「30」と数値の30は別物です。 最初に揃えるだけで後工程が圧倒的に楽になります。
② filter(抽出)
const result =
users.filter(user => user.age >= 30);
条件に合うデータだけ取り出します。
③ map(変換)
const result = users.map(user => ({
...user,
age2x:user.age * 2
}));
データ構造を変える処理です。
④ reduce(集計)
const total =
users.reduce(
(acc,user)=>acc+user.age,
0
);
売上合計や件数集計など、業務処理の中心になります。
ネストJSON操作|実務で避けて通れない重要技術
APIを扱い始めると必ず登場するのがネスト構造です。
const data = {
departments:[
{
name:"営業",
users:[
{name:"鈴木",sales:100},
{name:"田中",sales:200}
]
}
]
};
営業部全体の売上を計算する場合。
const total =
data.departments.reduce((acc,dept)=>{
const sum =
dept.users.reduce(
(a,u)=>a+u.sales,
0
);
return acc+sum;
},0);
ポイントはreduceの入れ子です。
実務ではこの構造を理解しているかで、API開発速度がかなり変わります。
Flatten(フラット化)|分析用データへ変換する
BIツール連携や集計処理では一覧形式に変換することが多くあります。
const flat =
data.departments.flatMap(dept =>
dept.users.map(user=>({
dept:dept.name,
...user
}))
);
結果。
[
{
dept:"営業",
name:"鈴木",
sales:100
}
]
分析基盤を作る現場ではかなり使います。
JSON変換パイプライン設計|実務で保守しやすい書き方
おすすめは関数分離です。
const result = data
.map(normalize)
.filter(condition)
.map(transform)
.reduce(grouping,{});
関数を分けるだけで可読性が劇的に改善します。
const normalize = row => ({
name:row[0],
age:Number(row[1])
});
const condition =
obj => obj.age >= 30;
const transform =
obj => ({
...obj,
age2x:obj.age * 2
});
旅行中に数週間ぶりにコードを開いても、すぐ理解できる設計になります。
GAS実務テンプレ|スプレッドシートをJSON化する
function jsonPipeline(){
const sheet =
SpreadsheetApp
.getActiveSpreadsheet()
.getActiveSheet();
const data =
sheet
.getDataRange()
.getValues();
const headers = data[0];
const json =
data.slice(1).map(row=>{
let obj={};
headers.forEach(
(h,i)=>
obj[h]=row[i]
);
return obj;
});
const result =
json
.filter(
u=>u.年齢>=30
)
.map(u=>({
...u,
年齢2倍:
u.年齢*2
}));
}
この形は実務でもかなり再利用できます。
JSON操作でよくあるミス3選
1. 深すぎるネスト
data.a.b.c.d.e
保守性が一気に下がります。
2. undefinedエラー
obj.xxx
存在確認を入れましょう。
if(obj.xxx)
3. 型変換ミス
"30" + 10
→ "3010"
Number変換は習慣化がおすすめです。
まとめ|JSON操作を覚えるとGASが業務システムになる
JSON操作の本質はシンプルです。
構造化 ↓ 変換 ↓ 集計 ↓ 出力
JSONを理解すると次のことが一気に楽になります。
- API連携
- データ分析
- RPA自動化
- Google Apps Script実務開発
- システム間データ統合
初級は「配列を扱う人」。
中級は「オブジェクトを扱う人」。
そして上級は、
JSON構造そのものを設計できる人
ここまで来るとGASは単なる自動化ツールではなく、本格的な業務改善プラットフォームへ変わります。







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