ray88’s diary

お仕事で困ったとき用の自分用の覚書

GAS ディクショナリの作成方法


ディクショナリ作成部品

/**
 * 指定されたスプレッドシートのシートから設定データを読み込む
 * 
 * @function loadConfig
 * @param {string} sheetName - 設定データが格納されているシート名(デフォルト: '設定')
 * @param {string} range - データを取得するセル範囲(デフォルト: 'A:B')
 * @returns {Object} 設定データのオブジェクト(キー:設定項目名、値:設定値)
 * @description 指定されたシートとセル範囲から設定データを読み取る。
 *              範囲の1列目に設定項目名、2列目に設定値が格納されている前提
 * @example
 * // デフォルトの「設定」シートのA:B列から設定を読み込む
 * const config = loadConfig();
 * console.log(config['設定項目名']);
 * 
 * @example
 * // 「マスタ」シートのC1:D100範囲から設定を読み込む
 * const config = loadConfig('マスタ', 'C1:D100');
 * console.log(config['設定項目名']);
 */
function loadConfig(sheetName = '設定', range = 'A:B') {
  // 設定データを格納するオブジェクトを初期化
  const config = {};
  
  // アクティブなスプレッドシートから指定されたシートを取得
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sheetName);
  
  // 指定された範囲のすべての値を取得
  const values = sheet.getRange(range).getValues();
  
  // 各行をループして設定データをオブジェクトに格納
  for (let i = 0; i < values.length; i++) {
    const key = values[i][0];    // 範囲の1列目から設定項目名を取得
    const value = values[i][1];  // 範囲の2列目から設定値を取得
    
    // キーが空でない場合のみオブジェクトに追加
    if (key !== '') {
      config[key] = value;
    }
  }
  
  // 設定オブジェクトを返す
  return config;
}

キーをもとにした値の取得方法

/**
 * 設定オブジェクトから指定されたキーの値を取得する
 * 
 * @function getValue
 * @param {string} key - 取得したい設定項目名
 * @param {Object} config - loadConfig() で取得した設定オブジェクト
 * @returns {*} 設定値(見つからない場合やエラーの場合は null)
 * @description 設定オブジェクトから指定されたキーの値を安全に取得する
 * @example
 * // 設定を読み込んでから値を取得
 * const config = loadConfig();
 * const apiKey = getValue('APIキー', config);
 * if (apiKey) {
 *   console.log(`API Key: ${apiKey}`);
 * }
 * 
 * @example
 * // 存在しないキーの場合
 * const config = loadConfig();
 * const unknownValue = getValue('存在しないキー', config);
 * console.log(unknownValue); // null
 */
function getValue(key, config) {
  try {
    // configオブジェクトが null/undefined でないかチェック
    if (!config) {
      console.log(`設定オブジェクトが無効です`);
      return null;
    }
    
    // 指定されたキーの値を返す(存在しない場合は null)
    return config[key] || null;
  } catch (e) {
    console.log(`設定取得エラー: ${key} - ${e.message}`);
    return null;
  }
}

ディクショナリをデバッグ

/**
 * 設定オブジェクトの全項目をログに出力する
 * デバッグやトラブルシューティング時に設定内容を確認するために使用
 * @param {Object} config - 設定オブジェクト(キー:値のペア)
 */
function printAllConfig(config) {
  
    // 設定オブジェクトの全キーを順次処理
  for (let key in config) {
    // 各設定項目をキー => 値の形式でログ出力
    Logger.log(`${key} => ${config[key]}`);
  }
}

呼び出し例

function testDic(){
  const config_Dic = loadConfig()
  //Logger.log(config_Dic["最終行取得列"]);
  //Logger.log(config_Dic["メールアドレス"]);
  //Logger.log(config_Dic["シート名"]);
  printAllConfig(config_Dic)
  console.log('完了')
}