前提
スプレッドシートから必要な情報だけ取り出して、別のシートに貼り付けるスクリプトをGASで作成中です。
一点追加したい機能があるのですが、コードの書き方がわからずスタックしています。。
GAS初心者ですので、有識者の方、お力添えお願いできれば幸いです。
実現したいこと
①シート1からデータを取得
②日時を指定(例、2022-10-01から2022-10-31)して該当するデータを取得
③取得したデータから条件分岐でさらに絞る
条件1:E列に【P】を含む文字があり⇐★この部分で止まっています。
条件2:かつN列が空白である
④絞り込んだデータをシート2へ転記
発生している問題・エラーメッセージ
const result = []; //フィルタした結果を格納する配列 for (var i = 0; i < array.length; i++) { if (array[i][13] === "") { result.push(array[i]); //上記のコードで条件2はクリアできたのですが、条件1が書き方がわからず叶っていません。。
該当のソースコード
function testDateFunction() { var ss = SpreadsheetApp.getActiveSpreadsheet(); //現在触っているファイルを取得 var sheet = ss.getSheetByName('シート1'); //対象のシート名を選択 var whole_sheet = sheet.getDataRange().getValues(); const array = whole_sheet.filter(function (element) { const day_from = ss.getRange('D1').getValue(); const day_to = ss.getRange('E1').getValue(); day_to.setDate(day_to.getDate()+1); return typeof element[3] == 'object' && element[3].getTime() >= day_from.getTime() && element[3].getTime() < day_to.getTime(); }); const result = []; //フィルタした結果を格納する配列 for (var i = 0; i < array.length; i++) { if (array[i][13] === "") { result.push(array[i]); } } console.log(JSON.stringify(array)); var sheet1 = ss.getSheetByName('シート2'); const lastRow = sheet1.getLastRow(); // 最終行を取得 sheet1.getRange(lastRow+1, 1, result.length, result[0].length).setValues(result); }
試したこと
二次元配列内の要素を検索する方法や比較演算子で出す方法などいろいろ検索しましたが結局求めている答えが見つからず質問した次第です。。
恐れ入りますが、お力添え頂きたく存じます。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/12/09 07:54