ITのえんぴつ

Google Blockly開発者ツールやIT・プログラミングを研究して発信するブログ

Google Apps Script (GAS) を使用して、NGの商品情報をログ出力する方法

この記事では、Google Apps Script (GAS) を使用して、スプレッドシート内のデータから「NG」の商品情報を抽出し、条件に合致したデータをログに出力する方法をご紹介します。

サンプルコード

/**
 * NGの商品情報をログ出力します。
 */
function NGの商品情報をログ出力() {
  すべてのシートを処理する(function(sheet, index) {
    var sheetName = sheet.getName();
    var data = sheet.getDataRange().getValues(); // シート全データを取得
    var result = [];
    var filteredRows = []; // 条件を満たす行を保存
    
    // データをループして条件を満たす行を収集
    for (var i = 5; i < data.length; i++) { // データは5行目以降が対象
      var row = data[i];
      if (
        row[7] && row[7].toString() === "NG" && // H列(インデックス7)が「NG」と等しい
        row[16] !== "試作品" && // Q列(インデックス16)が「試作品」でない
        row[16] !== "テスト" // Q列(インデックス16)が「テスト」でない
      ) {
        var rowData = [
          sheetName,  // シート名
          row[16],    // Q列:カテゴリ1(インデックス16)
          row[17],    // R列:カテゴリ2(インデックス17)
          row[3],     // D列:数量(インデックス3)
          row[4],     // E列:金額(インデックス4)
          row[1]      // B列:商品名(インデックス1)
        ];
        filteredRows.push(rowData.join(",")); // 条件に合う行を保存
      }
    }

    // 条件に合う行があるか確認
    if (filteredRows.length === 0) {
      // NGが0件の場合のメッセージ
      result.push(sheetName + ":NG 0件です。");
    } else {
      // NGがある場合の表題とデータ
      result.push("シート名,カテゴリ1(Q列),カテゴリ2(R列),数量(D列),金額(E列),商品名(B列)");
      result = result.concat(filteredRows);
    }

    // ログに出力
    Logger.log(result.join("\n"));
  });
}

コードの解説

1. すべてのシートを処理する 関数の利用

このスクリプトは、汎用関数 すべてのシートを処理する を利用して、スプレッドシート内のすべてのシートに対して処理を実行しています。

以下は すべてのシートを処理する 関数の例です:

function すべてのシートを処理する(processSheet) {
  var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
  var sheets = spreadsheet.getSheets();

  sheets.forEach(function(sheet, index) {
    processSheet(sheet, index);
  });
}

2. 条件に基づいたデータのフィルタリング

if (
  row[7] && row[7].toString() === "NG" && 
  row[16] !== "試作品" && 
  row[16] !== "テスト"
) {
  // データを保存
}
  • H列(インデックス 7)が "NG" の場合。
  • Q列(インデックス 16)が "試作品" または "テスト" ではない場合。

上記条件を満たす行を抽出します。

3. ログ出力のフォーマット

条件を満たす行がある場合、以下のフォーマットでログに出力します:

シート名,カテゴリ1(Q列),カテゴリ2(R列),数量(D列),金額(E列),商品名(B列)

条件を満たす行がない場合は、「NG 0件です。」とログ出力されます。

実行方法

  1. Google スプレッドシート を開き、メニューから「拡張機能」→「Apps Script」を選択。
  2. 新しいスクリプトプロジェクトを作成し、上記コードを貼り付け。
  3. スクリプトエディタ内で NGの商品情報をログ出力 を実行。
  4. 実行後、表示 → ログ で結果を確認。

使用例

以下のようなデータを例に考えます:

H列 (NG判定) Q列 (カテゴリ1) R列 (カテゴリ2) D列 (数量) E列 (金額) B列 (商品名)
NG 試作品 カテゴリA 10 5000 商品A
NG 正規品 カテゴリB 20 10000 商品B
NG テスト カテゴリC 5 2000 商品C

スクリプトを実行すると、以下がログに出力されます:

シート名,カテゴリ1(Q列),カテゴリ2(R列),数量(D列),金額(E列),商品名(B列)
Sheet1,正規品,カテゴリB,20,10000,商品B