GAS JSON操作完全ガイド|Google Apps Scriptで実務レベルのデータ設計・変換・API連携を習得する
Google Apps Script(GAS)を書き始めた頃、配列やオブジェクトは触れるけれど、 JSONになると急に難しく感じた経験はありませんか。
私自身、最初は「JSONってAPI用のデータ形式でしょ?」くらいの認識でした。 でもGASを使った業務自動化を深くやっていくと気づきます。
この記事では、単なるJSON構文では終わりません。 実務で本当に使う「JSON設計」「変換パイプライン」「ネスト構造処理」まで、 次レベルのJSON操作を旅行好きの友達に話す感覚で、わかりやすく解説します。
JSON操作とは?Google Apps Scriptで重要な理由
結論から言うと、JSON操作とは「データ構造を自由に変換する技術」です。
API / Gmail / Spreadsheet / Drive
↓
JSON化
↓
加工・集計・分析
↓
出力
GASでは、あらゆる情報が最終的にJSON的な形に集約されます。
- APIから取得したデータ
- スプレッドシートの行データ
- Gmailの情報
- Driveファイル情報
- フォーム回答データ
JSONは単なる形式ではありません。 「共通言語」と考えると理解しやすくなります。
GAS JSON操作のレベル構造
初級:JSONの基本理解
JSON.parse()
JSON.stringify()
obj.key
まずは文字列とオブジェクトの変換。 JSONを読む・作るが最初の入口です。
中級:JSON加工処理
- map()
- filter()
- reduce()
- 構造変換
ここに入ると「データ加工」が楽しくなります。 大量データでも数行で処理できます。
上級:実務設計レベル
- JSONスキーマ設計
- ネスト構造操作
- 変換パイプライン
- API連携設計
実際の業務自動化では、この設計力が大きな差になります。
JSON設計ができる人はGAS開発が速い
初心者時代によく見る例です。
悪い例(配列依存)
["鈴木",30,"営業"]
3番目が部署なのか年齢なのか、後から見ると分からなくなります。
良い例(JSON設計)
{
name:"鈴木",
age:30,
department:"営業"
}
- 可読性が高い
- 追加項目に強い
- バグが減る
- 保守しやすい
GAS実務では「処理を書く力」より、「構造を設計する力」が重要です。
Google Apps Script JSON操作の基本4パターン
① Normalize(正規化)
データ型を統一する工程です。 これを省くと後で必ず苦労します。
const normalized=data.map(row=>({
name:row[0],
age:Number(row[1]),
date:new Date(row[2])
}));
年齢を文字列のまま扱うと、あとで集計が壊れます。 最初に整える癖をつけると安定します。
② filter(抽出)
const result=
users.filter(
u=>u.age>=30
);
条件に合うデータだけ取り出せます。 営業管理や勤怠集計でも頻出です。
③ map(変換)
const result=
users.map(u=>({
...u,
age2x:u.age*2
}));
新しい項目を追加するときの基本技術です。
④ reduce(集計)
const total=
users.reduce(
(acc,u)=>acc+u.age,
0
);
これがGASデータ処理の黄金パターンです。
ネストJSON操作|実務で避けて通れない壁
APIを触り始めると、JSONは一気に複雑になります。
const data={
departments:[
{
name:"営業",
users:[
{name:"鈴木",sales:100},
{name:"田中",sales:200}
]
}
]
};
部署の中に社員、その中に売上。 こうした「入れ子構造」は現場では普通です。
ネストJSONの合計計算
const total=
data.departments.reduce(
(acc,dept)=>{
const sum=
dept.users.reduce(
(a,u)=>a+u.sales,
0
);
return acc+sum;
},0);
reduceの入れ子を使うのがポイントです。 慣れると大規模データでも整理して処理できます。
flatMapでJSONをフラット化する
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化して処理する癖をつけるだけで、GAS開発効率は大きく変わります。
JSON操作でよくあるミス
ネスト地獄
data.a.b.c.d.e
深すぎる構造は管理が破綻します。 フラット設計を優先しましょう。
undefinedエラー
if(obj.xxx){
}
存在確認は必須です。 API連携では特によく発生します。
型変換ミス
"30"+10
→ "3010"
Number変換を忘れない。 これだけで謎バグをかなり防げます。
まとめ|JSONを制する人がGASを制する
- 構造化する
- 変換する
- 集計する
- 出力する
GAS実務ではJSONを避けて通れません。 API連携、データ分析、RPA、自動化。 すべてJSONが土台になります。
最初は配列処理だけでも十分です。 その次にオブジェクト。 正式には最後に「JSON構造を設計する力」へ。
ここまで来ると、Google Apps Scriptは単なる自動化ツールではなく、 本格的な業務システム構築ツールに変わります。
JSONを自由に扱えるようになる。 それが、GAS中級者から上級者へ進む大きな分岐点です。







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