前提
右記リンク先質問のつづきです。⇒ 前回質問
発生している問題・
前回レクチャーいただいた内容をもとに
Haystack2リスト、Needles2リストの検索対象を日付に
置き換えました。
各表内の値が果物・野菜の名前の時は想定どおり、
Result欄に「'●'」フラグを返すことができたのですが、
日付に置き換えたところ、resultがすべてfalse判定と
なってしまいます。。。
Q:検索対象が日付データの場合には、別途 何かひと手間を
かけないと、正しく判定されないのでしょうか?
該当のソースコード
以下にOK(果物の名前)ver、NG(日付)ver双方のコードを
記載します。
GAS
1■OKver************************************************************** 2function searchNeedleInHaystack() { 3 const ss =SpreadsheetApp.getActiveSpreadsheet(); 4 const sheet = SpreadsheetApp.getActiveSheet(); 5 6 const haystack = sheet.getRange(4, 14, 4, 1).getValues(); 7 const haystackf = haystack.flat(); 8 console.log('haystackf ',haystackf); 9 //正解 [ 'apple', 'banana', 'orange', 'kiwi' ] 10 11 const needles = sheet.getRange(4, 16, 3, 1).getValues(); 12 const needlesf = needles.flat(); 13 console.log('needlesf ',needlesf); 14 // [ 'apple', 'tomato', 'banana' ] 15 16 //▼Haystackfの中からNeedleを探す 17 //結果はresult で返ってくる 18 19 const result2 = needlesf.map(needlesf => haystackf.includes(needlesf) ? ['●'] : ['']); 20 21// .map()で新しい配列を生成、結果を新配列resultとして戻す 22// (判定対象)配列needlesf 23// (判定条件)haystackf.includes(needlesf) 24// (trueの処理) ? 以降 配列needlesに ['●']を返す 25// (falseの処理) : 以降 配列needlesに [' ']を返す 26 27 console.log("result2 " +result2); 28 // [ ['●'], [''], ['●'] ] 29 30//▼判定結果をQ列にアウトプットする 31 sheet.getRange(4, 17, 3, 1).setValues(result2); 32 33} 34 35■NGver************************************************************************** 36function searchNeedleInHaystack2() { 37 const ss =SpreadsheetApp.getActiveSpreadsheet(); 38 const sheet = SpreadsheetApp.getActiveSheet(); 39 40 const haystack2 = sheet.getRange(10, 14, 4, 1).getValues(); 41 const haystackf = haystack2.flat(); 42 console.log('haystackf ',haystackf); 43 44 const needles2 = sheet.getRange(10, 16, 3, 1).getValues(); 45 const needlesf = needles2.flat(); 46 console.log('needles2 ',needles2); 47 console.log('needlesf ',needlesf); 48 49 //▼Haystack2の中にNeedles2があるかをチェック 50 //結果はresult で返ってくる 51 52 const result2 = needlesf.map(needlesf => haystackf.includes(needlesf) ? ['●'] : ['']); 53 54// .map()で新しい配列を生成、結果を新配列result2として戻す 55// (判定対象)配列needlesf 56// (判定条件)haystackf.includes(needlesf) 57// (trueの処理) ? 以降 配列result2に ['●']を返す 58// (falseの処理) : 以降 配列result2に [' ']を返す 59 60 console.log('result2 ',result2); 61 // 予想[ ['●'], [''], ['●'] ] ★うまくできない★ 62 63//▼判定結果をQ列にアウトプットする 64 sheet.getRange(10, 17, 3, 1).setValues(result2); 65} 66
試したこと
OKverのログとNGverのログを見比べてみましたが、
自力では、NGverのダメポイントを見つけられませんでした。
もし原因が単純な見落としでしたら申し訳ありません。
補足情報
お忙しいところ大変申し訳ありませんが、
どこがダメでどのように修正すればよいか、アドバイスを
いただけないでしょうか?
よろしくお願いいたします。

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/12/12 14:17 編集
2022/12/12 15:27 編集
2022/12/19 09:25
2022/12/19 11:47
2022/12/20 09:27 編集