前提・実現したいこと
GASで取得した2列の日付を連想配列のキーにして名前を値として出力したいです。
例えば下記表で言うと
日付 | 名前 |
---|---|
2019-07-01 | 安田たかし |
2019-07-02 | 橋本すぐる |
2019-07-02 | 佐々木こうじ |
2019-07-03 | 河本あいり |
2019-07-03 | 猪野しょうへい |
2019-07-03 | 寺島ゆうこ |
2019-07-03 | 寺島ゆうこ |
2019-07-03 | 寺島ゆうこ |
2019-07-04 | 石田しょうご |
2019-07-04 | 渡辺げんき |
2019-07-05 | 安藤けい |
2019-07-06 | 安藤けい |
2019-07-07 | 安藤けい |
2019-07-07 | 渡辺げんき |
↓このようにログ出力し、日付ごとの名前の数を数えたいです。
var info = {
2019-07-01 : ['安田たかし'],
2019-07-02 : ['橋本すぐる', '佐々木こうじ'],
2019-07-03 : ['河本あいり', '猪野しょうへい', '寺島ゆうこ'],
2019-07-04 : ['石田しょうご', '渡辺げんき'],
2019-07-05 : ['安藤けい'],
2019-07-07 : ['渡辺げんき'],
}
注意点としては2019-07-03の寺島ゆうこのように同じキーで同じ値の重複は数えないようにしたいです(連想配列の場合そもそも数えられないですか?)
また安藤けいのように前日にもある名前は数えないようにしたいです。
ただ渡辺げんきのように日付が続いてなければ数えたいです。
発生している問題・エラーメッセージ
同一キーに対して複数の値を入れる方法がわからない。
該当のソースコード
GAS
1 2 3function test(){ 4// シート取得 5 var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); 6 var data = sheet.getDataRange().getValues(); 7 8 for(var i = 1; i <= lastRow-1; i++){ 9 var obj = {}; 10 11// 日付と名前取得 12 var CI = Moment.moment(data[i][9]).format('YYYY-MM-DD') 13 var name = data[i][4] 14// 連想配列の作成 15 obj[CI] = name 16 17 Logger.log(obj) 18 } 19}
試したこと
上記コードのように、中に配列のない複数の連想配列を作ることはできました。
もしくはforの外にvar obj = {};を出して一つの連想配列は作れたのですが、キーが重複しているため一つのキーに対して値が一つのものしか作れませんでした。
補足情報(FW/ツールのバージョンなど)
初心者のためコードに簡単なコメントアウトを頂けると幸いです。
よろしくお願い致します。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/07/16 02:25
2019/07/16 02:46
2019/07/16 02:58
2019/07/16 03:11
2019/07/16 04:16