前提
データソースから複数(可変数)条件で抽出するためQUERY関数ではなくGASでスクラッチで記述しています。
積上集計のデータソースを生成するにあたりQUERY関数のGROUP BY句を利用するのですが、
データソースが増えてくるとQUERY関数の挙動が不安定になる為、
元データからselect句(query関数)で抽出、group byで積上数値を加算
→データソースをupdate
のような構成を想定し制作しています。
(具体的な工程としてはgroup byが必要なデータとそうでないものを一旦切り分け、計算後に再結合して戻す)
実現したいこと
以下のようなif文の条件式のand条件が動的に増減するようにしたい
GAS
1if(currentValues[i][0] !==202207 && currentValues[i][0] !==202208){ 2//処理内容 3}
該当のソースコード
GAS
1function splitSrcData() { 2 const srcSheet = //分割元のデータが入っているスプレッドシート 3 const uniqueValues = Array.from(new Set(dbSheet.getRange('A2:A').getValues().flat())).filter(String); //[202207,202208,202209]のような一意の数値型の一次元配列の返り値を別シートより抽出 4 const currentValues = srcSheet.getRange(1, 1, srcSheet.getLastRow(), 10).getValues(); 5 let term = ''; //条件格納用の変数 6 for (var i = 0; i < uniqueValues.length; i++) {//条件式を生成 7 term + `currentValues[i][0] !==` + uniqueValues.shift() + `&&` 8 } 9 let extractArray = []; 10 for (var i = 0; i < currentValues.length; i++) { 11 if (terms) { 12 extractArray.push(currentValues[i]); 13 } else { 14 } 15 }
試したこと
条件式を変数にいれてfor文で生成を試みましたが、バッククォートで囲うなどしてもダメでした。
(条件式を文字列として認識してしまっているため)
GAS
1 for (var i = 0; i < uniqueValues.length; i++) { 2 term + `currentValues[i][0] !==` + uniqueValues.shift() + `&&` 3 }
知識不足で恐縮ですがお知恵を拝借できれば幸いです。
補足情報
早々に回答、修正質問を下さった方、本当にありがとうございます。
自身で試行錯誤している間に論理演算子がおかしなことになっていたので修正いたしました。
パイプでor句としていたところは、&&でand句とすることが想定していた挙動となります。
また欲しい結果が分からないというコメントを受け、前提で実現したいことの具体的内容を追記しました。
uniqueValuesの等号、不等号については上述の通り元データから加工が必要なデータとそうでないデータを切り分ける為に使用します。

回答4件
あなたの回答
tips
プレビュー