質問: test2[i]; for(var j=0;j 2016/05/14 <本文(1つずつ改行する)> 2016/05/14 エラー 2016/05/14 A 日付型データでの処理がうまくいかないため、現在はまだ、先程の都道府県のデータで試しているのですが、実現出来ていません。データが追加されるたびに送信されてしまったり、送信順が日付順ではなくなってしまうのです。また、後からループなどで扱おうとした際にres["東京"]など、数字で指定できないのです。 そこでメールの自動送信を諦めて、まず日付ごとに振り分けたデータをその日付毎にシートや別ファイルとして書き出すことにとどめようかと考えています。 しかしシートを日数データ分の数十~数百個も作成するわけにも行かず悩んでいます。 今回の質問はこのために考えた工程だったのですが、遠回りしていますでしょうか。 ### メッセージ 解決までまだまだ時間がかかりそうです。スコア等皆様ご迷惑おかけします。
回答: とりあえず重複を拾ってみるコードを。GASで使えるのがES6相当であればもう少しきれいにかけるはず。データの処理については、ブラウザで動くJavaScriptを書いてからGASに組み込んでみてはいかがでしょう。 ``` var res = {}, i, l, tmp, key; var test2 = [ '2016/05/11', '2016/05/14', '2016/05/15' ]; var test3 = [ '2016/05/11 エラー', '2016/05/14 エラー', '2016/05/14 A', '2016/05/15 B' ]; for( i = 0, l = test2.length; i < l ; i++ ) { res[ test2[ i ] ] = []; } for( i = 0, l = test3.length; i < l ; i++ ) { tmp = test3[ i ]; for ( key in res ) { if ( !res.hasOwnProperty( key ) || tmp.indexOf( key ) == -1 ) { continue; } res[ key ].push( tmp ); } } console.dir( res ); // ブラウザのデベロッパーツールで確認する場合 ``` **動くサンプル:** ``` // 上記結果を使うとき for ( key in res ) { if ( !res.hasOwnProperty( key ) ) { continue; } console.log( res[ key ] ); // 配列 } ``` **追記:** > > hasOwnProperty > > > 【JavaScriptのループについて(オブジェクト編) - Tomcky's blog】 いまいち状況がわからないのですが、配列でもそれぞれの要素にUtilities.formatDateを使うことができますよ。 ``` var res = {}, i, l, tmp, key; var test2 = [ new Date( '2016/05/11' ), new Date( '2016/05/14' ), new Date( '2016/05/15' ) ]; var test3 = [ '2016/05/11 エラー', '2016/05/14 エラー', '2016/05/14 A', '2016/05/15 B' ]; for( i = 0, l = test2.length; i < l ; i++ ) { res[ Utilities.formatDate( test2[ i ], 'Asia/Tokyo', 'yyyy/MM/dd' ) ] = []; } for( i = 0, l = test3.length; i < l ; i++ ) { tmp = test3[ i ]; for ( key in res ) { if ( !res.hasOwnProperty( key ) || tmp.indexOf( key ) == -1 ) { continue; } res[ key ].push( tmp ); } } console.dir( res ); // ブラウザのデベロッパーツールで確認する場合 ```