📖
【GAS】スプレッドシートの情報をオブジェクト型で取得するテンプレート
はじめに:スプレッドシートの情報取得で便利なテンプレート
Google apps script(GAS)で業務効率を改善するとき、スプレッドシートを起点に操作することがほとんどです。
私が社内でよく依頼をうけるパターンは以下の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
に対してfor
やforEach
でループさせて、if
で条件分岐を作ることで処理していきます。
おわりに
GASに関するブログやではオブジェクト型ではなく、配列で処理する記事が多いですが、オブジェクト型での処理がオススメです。
簡単にオブジェクト型に変換できるので、ぜひこちらのコードを使ってみてくださいね。
参考
GASおじさんのブログ
Discussion