Quantcast
Channel: 配列タグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 757

ちょっとした工夫を取り入れたGASによる配列操作

$
0
0
GASでsetValues()を使っていると、値を参照するときにData[0][5]みたいになってコードが読みづらいですよね。 今回は見栄えのよいデータ参照方法を考えてみました。 例えば下のようなスプレッドシートで人物データを取得する場面を考えてみます。 従来通り、setValues()を使った方法 シンプルにこんな感じでしょうか。 function getData() { const Sheet = SpreadsheetApp.getActiveSheet(); // アクティブシート const LastRow = Sheet.getLastRow(); // 最終行 const StartCell = 7; // A7~F17までのデータを取得 const UserValues = Sheet.getRange(`A${StartCell}:F${LastRow}`).getValues(); } 実際に取得したデータを確認してみると、こんな感じでした。 ちなみにUserValues[0]でデータを取得してみるとこんな感じです。 例えば1行目の涼風青葉さんの名前を参照する場合、UserValues[0][2]となります。 しかも今回はスプレッドシートのセルを結合しているので、UserValues[0][4]は空欄になってしまいます。 うーん、使いづらい。。 ちょっとだけ工夫してみた pythonだと辞書型?GASだと連想配列? 呼び方はわからない(というか興味ない)ですが、少しは使いやすくなりました。 function getData() { const Sheet = SpreadsheetApp.getActiveSheet(); // アクティブシート const LastRow = Sheet.getLastRow(); // 最終行 let userArr = []; const StartCell = 7; for (let i = StartCell; i < LastRow; i++) { userArr[i - StartCell] = { idnex: Sheet.getRange(`A${i}`).getValue(), // 番号 flag: Sheet.getRange(`B${i}`).getValue(), // 参加有無 name: Sheet.getRange(`C${i}`).getValue(), // 氏名 address: Sheet.getRange(`D${i}`).getValue(), // メールアドレス note: Sheet.getRange(`F${i}`).getValue(), // 備考 } } } 実際に取得したデータはこんな感じでした。ぱっと見、あまり変わってませんね。 ちなみにさっきと同様userArr[0]でデータを取ってくるとこんな感じです。 取得データにkeyが付いているので、例えば葉月しずくを参照したいときは userArr[1].nameもしくはuserArr[1]["name"]で取ってこれます。他の項目についても同様です。 nameで名前を指定できるので、ソースコードも少しはわかりやすくなるかもしれない。 一応スプレッドシートの結合部分になる不要データもないので、その辺は心配なし。 結論 好み。 私はsetValues()派。何故なら楽だから。

Viewing all articles
Browse latest Browse all 757

Trending Articles