基礎 / 変数・条件分岐

第2回 変数・データ型・条件分岐 × AIコード生成

第1回では「コードを書いて動かす」体験をしました。第2回からは、プログラミングの土台となる 変数・データ型をきちんと理解したうえで、本研修で初めて 条件分岐(if文) に挑戦します。 題材は、JMAR の現場に直結する 産業マーケティングリサーチレポート。 市場データを読み取り、条件によって「投資すべき市場か/撤退を検討すべき市場か」を自動で判定するプログラムを、 自分の手でも、ChatGPT と協力しながらも作れるようになることを目指します。

🎯

到達目標

データ型と変数を正しく使い分け、比較演算子・論理演算子・if / else if / else を組み合わせて「条件によって処理を変える」GASを書ける。市場リサーチデータを自動でランク判定するプログラムを、AIと協力しながら完成・検証できる。

1第1回の振り返りと今回のテーマ

第1回では、GASをスクリプトエディタで動かし、Logger.log() で文字を出力したり、 setValue() でセルに値を書き込んだりしました。さらに、税込価格のような計算結果をセルに反映させ、 最後は ChatGPT にコードを書かせる体験までを行いました。

前回までにできるようになったこと

1
コードを実行する

スクリプトエディタで関数を作り、▷ボタンで実行できる。実行ログで結果を確認できる。

2
セルに書き込む

getRange() でセルを指定し、setValue() で値を書き込める。

3
計算する

変数に値を入れ、四則演算で計算した結果をセルに反映できる。

今回のテーマ ── 「市場リサーチレポートの自動判定」

ここまでは「決めた通りに必ず同じ処理をする」プログラムでした。しかし実務では、 「データの中身によって、やることを変えたい」場面がほとんどです。

  • 成長率が高い市場は「重点投資」、低い市場は「撤退検討」と振り分けたい
  • アンケートの満足度が一定スコア未満の回答だけ「要フォロー」とフラグを立てたい
  • 売上が目標を超えた営業所だけ「達成」と色をつけたい

こうした「もし〜なら、〜する」という判断こそが 条件分岐(if文) です。 今回は、JMAR のリサーチ業務をイメージしやすいように、産業マーケティングリサーチレポートを題材にします。 最終的に、市場セグメントのデータを読み取り、有望度を自動でランク分けするプログラムを完成させます。

💡

今回のゴールイメージ。「協働ロボット市場:規模850億円・成長率14%・自社シェア12%」というデータをシートに入れて実行すると、プログラムが自動で「問題児(育成)」と判定し、推奨アクションまで書き込んでくれる——そんな仕組みを、自分の手で作れるようになります。

2データ型を正しく理解する

条件分岐を正しく書くには、「データには種類(型)がある」ことを理解しておく必要があります。 たとえば「14」という数値と「"14"」という文字列は、見た目は同じでもコンピュータにとっては別物です。 ここを曖昧にすると、条件分岐が思った通りに動かない原因になります。

本研修でまず押さえる3つの型

データ型意味リサーチ業務での例
文字列(String) 文字の集まり。" または ' で囲む 製品セグメント名「協働ロボット」、判定ラベル「花形」
数値(Number) 計算できる数。囲まない 市場規模 850、成長率 14、シェア 12
真偽値(Boolean) true / false の2値のみ 「成長市場かどうか」「目標達成したか」
文字列 String "協働ロボット" 引用符で囲む/文字として扱う 数値 Number 850 囲まない/計算に使える 真偽値 Boolean true false 「はい/いいえ」の2値だけ
図1:3つの基本データ型。条件分岐は最終的に「真偽値(true / false)」で動く

型を確かめる ── typeof

変数に入っている値が「どの型か」は、typeof で確認できます。実際に動かして、型の違いを体感してみましょう。

コード.gs ── ① データ型を確認する
function checkTypes() {
  const segment = "協働ロボット";  // 文字列
  const growth  = 14;            // 数値
  const isHot   = true;          // 真偽値

  Logger.log(typeof segment); // → string
  Logger.log(typeof growth);  // → number
  Logger.log(typeof isHot);   // → boolean
}

「14」と「"14"」は別物です。数値の 14 は計算できますが、文字列の "14" は計算できません。スプレッドシートから読み取った値が文字列になっていると、growth >= 10 の比較が意図せず失敗することがあります。この落とし穴は第13章(つまずきポイント)で詳しく扱います。

3変数の宣言と再代入(const / let)

第1回でも触れましたが、変数は値を入れておく「名前付きの箱」です。 GASでは constlet の2種類で変数を宣言します。条件分岐では、 「判定結果をあとから入れ直す」場面が出てくるため、この2つの違いがとても重要になります。

宣言性質使いどころ
const 一度入れたら変更しない(再代入不可) 消費税率、しきい値など、途中で変わらない値
let あとから入れ直せる(再代入可) 条件によって中身が変わる「判定結果」など
コード.gs ── ② const と let の違い
function constLetDemo() {
  const threshold = 10;   // しきい値:成長率10%(変えない)
  let judge = "未判定";     // 判定結果:あとで入れ直す

  judge = "成長市場";          // ← let なので再代入できる

  Logger.log(threshold); // → 10
  Logger.log(judge);     // → 成長市場
}
i

迷ったら、まず const から。「あとで入れ直す必要がある」と分かったときだけ let に変えるのが、エラーの少ない書き方です。条件分岐で「判定結果」を入れる変数は、中身が枝分かれするので let を使います。

4セルの値を「読み取る」

第1回では setValue() でセルに値を書き込みました。 今回はその逆、セルから値を読み取る getValue() を使います。 リサーチデータを判定するには、まず「シートに入っている数字を読む」必要があるからです。

シートのセル B3 = 14 getValue() 読み取る プログラムの変数 const growth = 14; setValue() 書き込む 別のセル B6 = "成長市場"
図2:getValue() で読み取り → プログラムで判定 → setValue() で書き戻す
コード.gs ── ③ セルの値を読み取る
function readGrowth() {
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();

  // B3セルの値を読み取って、変数 growth に入れる
  const growth = sheet.getRange("B3").getValue();

  Logger.log("読み取った成長率: " + growth);
}
💡

getValue()(書き込みの setValue() と1文字違い)。get=取ってくる」「set=セットする」と覚えると混乱しません。この「読み取る → 判定する → 書き戻す」が、今回作るプログラムの背骨になります。

5比較演算子 ── 条件をつくる部品

条件分岐の「条件」は、比較演算子でつくります。たとえば「成長率が10以上か?」は growth >= 10 と書きます。比較の結果は、第2章で学んだ 真偽値(true / false) になります。

>より大きい
14 > 10 → true
>=以上
10 >= 10 → true
<より小さい
8 < 10 → true
<=以下
12 <= 10 → false
==等しい
"花形" == "花形" → true
!=等しくない
"花形" != "負け犬" → true
コード.gs ── ④ 比較の結果は true / false
function compareDemo() {
  const growth = 14;
  const share  = 12;

  Logger.log(growth >= 10); // → true (14は10以上)
  Logger.log(share >= 20);  // → false(12は20未満)
}

「等しい」は ==(イコール2つ)。イコール1つの = は「代入(箱に入れる)」、イコール2つの == は「等しいかの比較」です。条件分岐で if (rank = "花形") と書くのは典型的な間違い。正しくは if (rank == "花形") です。

6if文 ── 処理を分岐させる

いよいよ条件分岐の本体、if文です。「もし(条件)が true なら、{ } の中を実行する」という構文です。 条件が false のときは、{ } の中身はまるごとスキップされます。

スタート 成長率 >= 10 ? (条件) true 「成長市場」 と書き込む false 何もしない 次の処理へ
図3:if文の流れ。条件が true のときだけ { } の中を実行する
コード.gs ── ⑤ はじめてのif文
function judgeGrowth() {
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  const growth = sheet.getRange("B3").getValue();

  // もし成長率が10以上なら、B6に「成長市場」と書く
  if (growth >= 10) {
    sheet.getRange("B6").setValue("成長市場");
  }
}

このコードは、B3が 14 なら B6 に「成長市場」と書き込みます。 しかし B3が 5 だったら——条件が false なので、B6には何も書かれません。 「条件を満たさなかったときも、ちゃんと何か書いてほしい」——そこで次の else が登場します。

i

if文の形をしっかり覚えましょう。if のあとに ( 条件 ) を丸かっこで、実行したい処理を { 波かっこ } で囲みます。この「丸かっこ」と「波かっこ」のセットが、条件分岐の基本形です。

7if / else ── 二択に分ける

else(エルス)を加えると、「条件が true ならA、そうでなければB」という二択の分岐になります。 リサーチでいえば「成長市場か、成熟市場か」をきれいに振り分けられます。

コード.gs ── ⑥ if / else で二択
function judgeGrowth2() {
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  const growth = sheet.getRange("B3").getValue();
  let result;  // 判定結果を入れる箱(あとで入れ直すので let)

  if (growth >= 10) {
    result = "成長市場";   // 条件が true のとき
  } else {
    result = "成熟市場";   // それ以外(false)のとき
  }

  sheet.getRange("B6").setValue(result);
  Logger.log("判定: " + result);
}

ここでのポイントは、判定結果を一度 result という変数に入れてから、最後にまとめて書き込んでいること。 こうすると、条件が増えても「書き込む処理」は1か所で済むので、コードがすっきりします。

「判定(if/else)」と「書き込み(setValue)」を分けるのがコツ。分岐の中では result に値を入れるだけにして、シートへの反映は分岐の外で1回だけ行う。この型を覚えると、このあとの3分岐・4分岐でも迷いません。

8else if ── 3つ以上に枝分かれ

二択では足りないことも多いものです。たとえば市場規模を「大規模/中規模/小規模」の3つに分けたい—— そんなときは else if を使います。上から順に条件を判定し、最初に true になったところだけ実行します。

規模 >= 1000 ? if true 「大規模市場」 false 規模 >= 300 ? else if true 「中規模市場」 false それ以外 else 「小規模市場」
図4:else if は「上から順に判定し、最初に当てはまった1つだけ」を実行する
コード.gs ── ⑦ else if で3分岐
function judgeSize() {
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  const size = sheet.getRange("B2").getValue(); // 市場規模(億円)
  let category;

  if (size >= 1000) {
    category = "大規模市場";
  } else if (size >= 300) {
    category = "中規模市場";
  } else {
    category = "小規模市場(ニッチ)";
  }

  sheet.getRange("B8").setValue(category);
}

条件の順番に注意。else if は「上から順」に判定されます。もし size >= 300 を先に書いてしまうと、1500のような大きい値も「中規模」と判定されてしまいます(300以上は当てはまるため)。厳しい条件(大きい値)から先に書くのが鉄則です。

9論理演算子 ── 複数条件を組み合わせる

実務の判断は、たいてい「条件が2つ以上」あります。 「成長率が高く、かつシェアも高い市場」のように、複数の条件を組み合わせるのが 論理演算子です。

記号読み方意味
&& かつ(AND) 両方とも true なら true growth >= 10 && share >= 20
|| または(OR) どちらか一方でも true なら true size >= 1000 || share >= 30
! でない(NOT) true と false を反転する !isLaunched
コード.gs ── ⑧ 「かつ」で2条件を組み合わせる
function judgeStar() {
  const growth = 14;
  const share  = 25;
  let result;

  // 成長率10%以上「かつ」シェア20%以上 なら「花形」
  if (growth >= 10 && share >= 20) {
    result = "花形(重点投資)";
  } else {
    result = "花形ではない";
  }

  Logger.log(result); // → 花形(重点投資)
}
i

「&&(かつ)」は両方そろって初めて true。上の例では、成長率14%(10以上 ✓)と シェア25%(20以上 ✓)の両方を満たすので「花形」。もしシェアが12%なら、片方が false になるので「花形ではない」になります。次章では、この組み合わせを使って 4つのランクに自動振り分けします。

10統合実践:市場セグメント自動評価プログラム

ここまで学んだ「変数・データ型・getValue・比較演算子・if / else if / else・論理演算子」を全部つなげて、 少し複雑な、実務レベルのGASを1本組み上げます。 題材は、産業マーケティングリサーチの定番フレームワーク PPM(プロダクト・ポートフォリオ・マネジメント)です。

PPMマトリクスとは

PPMは、「市場成長率」と「自社シェア」の2軸で、各製品・事業を4つのタイプに分類する考え方です。 リサーチレポートでは、各市場セグメントがどの象限に入るかを示し、投資判断の材料にします。

花形 高成長 × 高シェア → 重点投資 問題児 高成長 × 低シェア → 育成・投資判断 金のなる木 低成長 × 高シェア → 維持・収穫 負け犬 低成長 × 低シェア → 撤退検討 市場成長率(高 ↑) 自社シェア(← 高  低 →) 高(20%以上) 低(20%未満)
図5:PPMマトリクス。成長率10%・シェア20%を境目に、4つのランクへ自動判定する

判定ロジックの早見表

条件(成長率・シェア)ランク推奨アクション
成長率 >= 10 かつ シェア >= 20花形重点投資 ── シェアを保ち成長に乗る
成長率 >= 10 かつ シェア < 20問題児育成 ── シェア拡大を狙うか見極める
成長率 < 10 かつ シェア >= 20金のなる木維持・収穫 ── 利益を他事業の原資に
成長率 < 10 かつ シェア < 20負け犬撤退検討 ── 資源の再配分を検討

完成版コード

以下が、今回のメインとなる「少し複雑なGAS」です。 ① 値を読み取り → ② if / else if&& でランク判定 → ③ 市場規模も別途判定 → ④ 結果を書き込み → ⑤ ランクに応じてセルの色を変える、という流れになっています。 一見長く見えますが、これまで1つずつ学んだ部品の組み合わせです。

コード.gs ── ⑨【メイン】市場セグメント自動評価
function evaluateSegment() {
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();

  // ===== ① 入力値を読み取る(B列) =====
  const segment = sheet.getRange("B1").getValue(); // 製品セグメント名
  const size    = sheet.getRange("B2").getValue(); // 市場規模(億円)
  const growth  = sheet.getRange("B3").getValue(); // 年成長率(%)
  const share   = sheet.getRange("B4").getValue(); // 自社シェア(%)

  // ===== ② しきい値を定数で宣言(変えやすくする) =====
  const GROWTH_LINE = 10; // 成長率の境目:10%
  const SHARE_LINE  = 20; // シェアの境目:20%

  // ===== ③ PPMランクを判定する =====
  let rank;    // 判定結果(花形/問題児/金のなる木/負け犬)
  let action;  // 推奨アクション

  if (growth >= GROWTH_LINE && share >= SHARE_LINE) {
    rank   = "花形";
    action = "重点投資 ── シェアを維持しながら市場成長に乗る";
  } else if (growth >= GROWTH_LINE && share < SHARE_LINE) {
    rank   = "問題児";
    action = "育成 ── 投資してシェア拡大を狙うか見極める";
  } else if (growth < GROWTH_LINE && share >= SHARE_LINE) {
    rank   = "金のなる木";
    action = "維持・収穫 ── 利益を確保し他事業の原資にする";
  } else {
    rank   = "負け犬";
    action = "撤退検討 ── 資源の再配分を検討する";
  }

  // ===== ④ 市場規模の区分を判定する =====
  let sizeLabel;
  if (size >= 1000) {
    sizeLabel = "大規模市場";
  } else if (size >= 300) {
    sizeLabel = "中規模市場";
  } else {
    sizeLabel = "小規模市場(ニッチ)";
  }

  // ===== ⑤ 結果をシートに書き込む =====
  sheet.getRange("B6").setValue(rank);
  sheet.getRange("B7").setValue(action);
  sheet.getRange("B8").setValue(sizeLabel);

  // ===== ⑥ ランクに応じてセルの背景色を変える =====
  const cell = sheet.getRange("B6");
  if (rank == "花形") {
    cell.setBackground("#fde68a");       // 黄色
  } else if (rank == "問題児") {
    cell.setBackground("#bfdbfe");       // 青
  } else if (rank == "金のなる木") {
    cell.setBackground("#bbf7d0");       // 緑
  } else {
    cell.setBackground("#fecaca");       // 赤
  }

  Logger.log(segment + " の判定: " + rank + "(" + sizeLabel + ")");
}

このコードには、今日学んだ要素がすべて詰まっています。定数(const)、再代入する変数(let)、値の読み取り(getValue)、比較演算子(>= < ==)、論理演算子(&&)、多分岐(if / else if / else)。次の章で、実際にデータを書き換えながら動きを確かめます。

11ハンズオン演習:条件分岐を試す

いよいよ実践です。スプレッドシートのデータを実際に書き換えて、条件分岐が正しく動くことを自分の目で確認しましょう。 「数字を変える → 実行する → 判定が変わる」を体感するのが、条件分岐を腹落ちさせる一番の近道です。

STEP 1 ── 入力シートを準備する

新しいスプレッドシートを開き(sheets.new)、次のようにA列・B列を入力してください。B6〜B8は空のままで構いません(プログラムが自動で埋めます)。

A B 1 製品セグメント 協働ロボット 2 市場規模(億円) 850 3 年成長率(%) 14 4 自社シェア(%) 12 5 6 PPM判定 (自動入力) 7 推奨アクション (自動入力) 8 市場規模区分 (自動入力)
図6:演習用シートのレイアウト。黄色のセル(B6〜B8)はプログラムが自動で埋める

STEP 2 ── メインコードを貼り付けて実行する

  1. 「拡張機能」→「Apps Script」でスクリプトエディタを開く
  2. 第10章の ⑨【メイン】市場セグメント自動評価 のコードを丸ごと貼り付ける
  3. 💾 保存し、関数名選択を evaluateSegment にして ▷ 実行
  4. シートに戻り、B6に「問題児」、B7に推奨アクション、B8に「中規模市場」が入り、B6が青色になっていれば成功!
i

初期データ(成長率14・シェア12)は「成長率は高いがシェアは低い」状態なので、判定は 問題児 になります。図5のマトリクスと照らし合わせて、なぜそうなるか確認してみましょう。

STEP 3 ── データを書き換えて、判定が変わることを確かめる

ここが今回の一番大事な演習です。B2〜B4の数字を次の表のとおり書き換えて、その都度 evaluateSegment を再実行してください。 B6の判定とセルの色が、表の「期待される判定」と一致するかを1件ずつ確認しましょう。

No.製品セグメント(B1)規模 B2成長率 B3シェア B4期待される判定(B6)
1協働ロボット8501412問題児
2産業用センサー1200635金のなる木
3AI画像検査装置5001825花形
4従来型FAXシステム20038負け犬
5境界テスト3001020花形
💡

No.5は「ちょうど境目」のテストです。成長率10・シェア20は、コードでは >=(以上)で判定しているので、どちらも「以上」に当てはまり「花形」になります。もし「花形」にならなかったら、コードの比較演算子が >(より大きい)になっていないか確認してみましょう。境界値の挙動は、条件分岐で最も間違いやすいポイントです。

STEP 4 ── しきい値を変えて、判定基準そのものを動かす

最後に、コードの しきい値(境目)を変える 実験をします。第10章のコードの次の行を探してください。

変更する2行
  const GROWTH_LINE = 10; // ← これを 15 に変えてみる
  const SHARE_LINE  = 20; // ← これを 10 に変えてみる

GROWTH_LINE15 に、SHARE_LINE10 に書き換えて、もう一度 No.1(成長率14・シェア12)を実行してみてください。 先ほどは「問題児」だった協働ロボットが、今度は 「金のなる木」 に変わります (成長率14 < 15 で「低成長」、シェア12 >= 10 で「高シェア」と判定されるため)。

これが条件分岐の威力です。「判断の基準(しきい値)」を1か所変えるだけで、何百件のデータでも一斉に判定をやり直せます。リサーチレポートで「成長市場の定義を10%から15%に見直す」といった作業が、コード1行で完了するわけです。実験が終わったら、しきい値は元の 1020 に戻しておきましょう。

12AIに「条件分岐入りGAS」を書かせる

第1回で学んだ通り、2026年のスタイルは「自分で書く」と「AIに書かせる」の並走です。 条件分岐のようにロジックが複雑になるほど、AIの力が効いてきます。ただし、条件分岐は 「境界値」や「条件の順番」でAIも間違えやすいので、出力をそのまま信じず必ず検証することが大切です。

条件分岐をAIに頼むときの「型」

条件分岐を依頼するときは、「判定の表」を言葉で渡すのがコツです。 第10章の「判定ロジックの早見表」のように、条件と結果を箇条書きで明示すると、AIは正確なコードを返しやすくなります。

🪄 ChatGPT へのプロンプト ── 条件分岐の生成
あなたはGoogle Apps Script(GAS)の専門家です。 プログラミング初学者向けに、産業マーケティングリサーチ用の判定プログラムを書いてください。 【やりたいこと】 今開いているスプレッドシートのアクティブなシートで、以下のセルを読み取ります。 - B2:市場規模(億円、数値) - B3:年成長率(%、数値) - B4:自社シェア(%、数値) 成長率と自社シェアから、PPMマトリクスの4分類を判定し、B6に書き込んでください。 判定ルールは次のとおりです(「成長率10%以上」「シェア20%以上」を境目とする)。 - 成長率10以上 かつ シェア20以上 → 「花形」 - 成長率10以上 かつ シェア20未満 → 「問題児」 - 成長率10未満 かつ シェア20以上 → 「金のなる木」 - 成長率10未満 かつ シェア20未満 → 「負け犬」 【制約】 - if / else if / else と論理演算子(&&)を使ってください - 「10%以上」は >= で判定してください(ちょうど10のときも「以上」に含める) - しきい値(10と20)は、あとで変えやすいように定数(const)で宣言してください - コメントを多めに書いて、初学者でも読めるようにしてください - 関数名は judgePpm にしてください

動作確認のチェックポイント:① 関数名が judgePpm か/② しきい値が const で宣言されているか/③ >= で「以上」を表現できているか(> になっていないか)/④ 第11章の5つのテストケースで、すべて期待通りの判定になるか。とくに No.5の境界値(10・20) は必ず確認しましょう。

うまく動かなかった時のデバッグ依頼

AIの出したコードがエラーになったり、判定がおかしいときは、「どんな入力で、何を期待し、実際どうなったか」をセットで伝えると、修正が速くなります。

🔧 ChatGPT へのプロンプト ── 判定がおかしい時
先ほどのコードを実行したところ、判定が期待と違いました。原因と、修正したコード全文を教えてください。 【入力した値】 市場規模 300 / 成長率 10 / シェア 20 【期待していた判定】 「花形」(成長率も10以上、シェアも20以上なので) 【実際の判定】 「負け犬」になってしまった 【気になっている点】 「以上(>=)」と「より大きい(>)」の使い分けが原因ではないかと思っています。

AIは「条件の順番」や「境界値」をよく間違えます。たとえば else if の順番を逆にして、大きい値が手前の条件に吸い込まれてしまう、といったミスです。必ず自分のテストケース(第11章の表)で全パターン検証してください。AIに任せきりにせず、「判定表」という形で正解を自分が持っておくことが、品質を守る最大のポイントです。

13つまずきポイントと対処

条件分岐は、初学者が最初に「思った通りに動かない」を経験する場所です。代表的な3つのつまずきを、先回りして押さえておきましょう。

=== を取り違える

「等しいか比較したい」のに、代入の = を書いてしまうミスです。条件の中で値を比較するときは、必ず == を使います。

よくある間違い → 正しい書き方
// ✗ 間違い:= は「代入」なので、条件として正しく働かない
if (rank = "花形") { ... }

// ✓ 正しい:== は「等しいか」の比較
if (rank == "花形") { ... }

② セルの値が「文字列」になっていて比較に失敗する

スプレッドシートのセルに 14 ではなく、先頭にスペースが入った " 14" や、文字列として入力された数字が入っていると、 growth >= 10 が思った通りに動かないことがあります。心配なときは、読み取った直後に 数値へ変換しておくと安全です。

数値として確実に扱う
// Number(...) で、確実に数値に変換してから比較する
const growth = Number(sheet.getRange("B3").getValue());

else if の順番で取りこぼす

第8章でも触れた通り、else if は「上から順」です。範囲で判定するときは 厳しい条件(大きい値)から先に書きます。下の例では、順番を逆にすると 1500 も「中規模」と判定されてしまいます。

書き方結果(size = 1500 のとき)
✓ 正if (size >= 1000) ... else if (size >= 300) ...「大規模市場」(正しい)
✗ 誤if (size >= 300) ... else if (size >= 1000) ...「中規模市場」(取りこぼし)
i

困ったら「Logger.log で途中の値を見る」。判定がおかしいときは、Logger.log(growth)Logger.log(typeof growth) を入れて、実際にどんな値・型が入っているかを確かめるのがデバッグの第一歩です。これは第3回以降でも繰り返し使う、最も基本的な調査テクニックです。

HW

第2回の宿題

次回までに、以下の4つに取り組んでください。所要時間:45〜60分程度
1

メインプログラムを動かし、5つのテストケースを検証する

第11章の手順で演習用シートを作り、⑨【メイン】市場セグメント自動評価 を実行してください。第11章STEP3の5つのテストケースすべてで、判定(B6)と色が「期待される判定」と一致することを確認しましょう。1件でも食い違ったら、コードのどこが原因かを考えてみてください。

2

しきい値を変えて、判定がどう変わるか観察する

第11章STEP4のとおり、GROWTH_LINESHARE_LINE の値を変えて再実行し、同じデータでも判定が変わることを確認してください。「成長市場の定義を厳しくすると、花形が減る」といった変化を、自分の言葉で1〜2行メモしておきましょう。

3

ChatGPTに条件分岐入りのGASを生成させる

第12章の 「条件分岐の生成」プロンプト(judgePpm) を ChatGPT に貼り付け、出力されたコードをスクリプトエディタで実行してください。第11章の5つのテストケースで全パターン検証し、とくに境界値(成長率10・シェア20)が「花形」になるかを必ず確認します。間違っていたら、デバッグ依頼プロンプトで修正してもらいましょう。

4

自分の業務に近い「判定プログラム」をAIと作る

自分の業務に近いテーマで、条件分岐を使った判定プログラムを ChatGPT と一緒に作ってみてください。例:アンケート満足度(5段階)を「高評価/普通/要フォロー」に振り分ける/問い合わせ件数で営業所を「繁忙/通常/閑散」に分類するなど。「判定の表」を自分で先に書いてからAIに渡すのがコツです。次回の冒頭で、3名ほどに「どんな判定を作ったか」を共有してもらいます。

📩

提出方法:宿題④で作成したスプレッドシートのURL、ChatGPTに送ったプロンプト、最終的に動いたGASコード、そして「判定の表」の4点を、研修事務局へメールでご提出ください。提出期限:次回研修の前日17:00まで。