📖

【GAS】スプレッドシートの情報をオブジェクト型で取得するテンプレート

2025/01/22に公開

はじめに:スプレッドシートの情報取得で便利なテンプレート

Google apps script(GAS)で業務効率を改善するとき、スプレッドシートを起点に操作することがほとんどです。

私が社内でよく依頼をうけるパターンは以下の2つです。

  1. メール送信を自動送信する
  2. まとめてカレンダー登録を行う

どちらの場合も、スプレッドシートに情報をまとめるところから始めます。

シート情報をGASで処理していく場合、シート内にまとめた情報を取得し、その後の処理を行っていきます。

シート情報を操作しやすいオブジェクト型で取得するGASコードのテンプレートの紹介です。

この記事の対象者

  • GAS初心者~中級者
  • GASで業務効率を改善したい人
  • オブジェクトを使える人(使いたい人)

テンプレートを使うための準備

1行目をヘッダーとして、2行目以降にデータをいれたスプレッドシートを作成します。

何となく1行目や1列目を開けてスプレッドシートを作るのは、データの扱いが難しくなるのでやめましょう。

コードの紹介

GAS code
function main(){
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  const sheet = ss.getSheetByName('シート1');

  const items = getItems(sheet);

  /*
    この下に実行したいコードを書く
  */
}

//↓スプレッドシートの情報をオブジェクトにするfunction
function getItems(sheet) {
  const values = sheet.getDataRange().getValues();
  const headers = values.shift();
  const items = [];

  for (const [index, value] of values.entries()) {
    const item = {};
    item['行数'] = index + 2;
    headers.forEach((header, index) => {
      item[header] = value[index];
    });
    items.push(item);
  };

  return items;
}

このコードを使うとitemsにヘッダーをkey、各行の情報がvalueとして格納されます。

行数があるとあとからsetValuesするときに便利なので、行数もオブジェクトに含めています。

取得例
[ { '行数': 2,
    '会議名': '週次プロジェクト会議',
    '会議室': '会議室A',
    '議論内容': '進行中のプロジェクトの更新と次のステップについての議論',
    '送信予約日': Thu Apr 04 2024 00:00:00 GMT+0900 (GMT+09:00),
    'メール送信': '' },
  { '行数': 3,
    '会議名': 'マーケティング戦略会議',
    '会議室': '会議室D',
    '議論内容': 'マーケティングキャンペーンの計画と実施に関する議論',
    '送信予約日': Wed Apr 10 2024 00:00:00 GMT+0900 (GMT+09:00),
    'メール送信': '' },
  { '行数': 4,
    '会議名': '新規プロジェクトアイデアブレスト',
    '会議室': '会議室G',
    '議論内容': '新しいプロジェクトのアイデアをブレストするためのワークショップ',
    '送信予約日': Fri Apr 12 2024 00:00:00 GMT+0900 (GMT+09:00),
    'メール送信': '' }]

あとはitemsに対してforforEachでループさせて、ifで条件分岐を作ることで処理していきます。

おわりに

GASに関するブログやではオブジェクト型ではなく、配列で処理する記事が多いですが、オブジェクト型での処理がオススメです。

簡単にオブジェクト型に変換できるので、ぜひこちらのコードを使ってみてくださいね。

参考

GASおじさんのブログ
https://uncle-gas.com/gas-html-display-dynamic/

Discussion