実現したいこと
スプレッドシート上のドロップダウンリストで選択中の名前から、
対応するメールアドレスを取得したい。
メールアドレスは[メアドマスタ]シートに有る。
↓
1行目がキー、2行目以降がデータであるGoogleスプレッドシートから
連想配列(Map)を作って利用したい。
(Visual BasicだとDictionaryだったので、それをGASでやりたい)
スプレッドシートをデータベースの表代わりにして、
連想配列に格納し利用するのは誰でもやっていそうだが、
Spreadsheet.getDataRange().getValues()で一気に取得した後
纏めてMapに書き込むやり方を検索しているが、見つけられない。
スプレッドシートの行数分、ループ処理でMapに書き込むしか無いのか?
検索したキーワード
「スプレッドシート 連想配列 GAS map」
見つけたけれど動かせなかったコード
[JavaScript] ヘッダ行のある2次元配列をMapの配列に変換
https://qiita.com/330k/items/2426cc0fe83ccdbc64dc
該当のソースコード
1// この関数は上記サイトのコピペ 2function tableToMaps(table){ 3 const headers = table[0]; 4 return table.slice(1).map((e) => e.reduce((i,n,a) => i.set(headers[a], n), new Map())); 5} 6 7function myFunction() { 8 const SheetID = 'testSheetID'; 9 const SheetName = 'シート1'; 10 11 const Sheet = SpreadsheetApp.openById(SheetID).getSheetByName(SheetName); 12 var values = Sheet.getDataRange().getValues(); 13 const maps = tableToMaps(values); 14}
発生している問題・エラーメッセージ
TypeError: Cannot read property '0' of undefined tableToMaps @ コード.gs:2
GASのコードを書くのは、これが2回目で「アロー演算子とは何?」というレベル。
上記エラーメッセージを自力解決出来ず止まっている。