【GAS JSON操作完全ガイド】Google Apps ScriptでJSON変換・API連携・データ加工を実務レベルで解説

2026年5月30日土曜日

GAS JavaScript プログラミング

t f B! P L

【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は単なる自動化ツールではなく、本格的な業務改善プラットフォームへ変わります。

このブログを検索

Blog Archive

Welcome



旅するWebライター「Hide」のブログへようこそ!

2年間の世界一周を終え、今は旅の思い出を言葉にしながら、AIやプログラミングという新しい冒険を楽しんでいます。最新技術を味方につけて、もっと自由でクリエイティブな発信を続けていきます!

人気の投稿

QooQ