Posted at

GASメモ:if文の使い方を何か勘違いしていたと思う


この記事は

仕事でGASを書いているときに個人的にウンウンしたところの備忘録です

ブログに全体の作業をまとめる一方で、別の作業でも詰まりそうなところを後からサクッと参照するため、短い記事でまとめていく予定。

要するに自分用、良くて初心者レベルのことしか書いてませんのでよろしくお願いします。


今回やりたかったこと

GASnazo3-2.JPG

こういう状態の元データに対して

処理1:「Subsection~」と「PageNumber~」の行は不要なので消す

処理2:1種類の動物ごとに「項目番号+動物名+説明文」を1つのセルに入った1行にまとめる = 次に項目番号と一致するまでその後の配列内容を前と結合していく

という2つの処理をしたかったので、


GAS.js

if (正規表現で不要文字列を判定) {

 処理1;
} else if (正規表現で項目番号を判定) {
 処理2;
}

という風に書いて実行しました。


その結果…

1個目の処理は行われずに2個目だけ実行されてしまう。


なぜなのか

いやなぜなのか、って今考えると自分かアホだからとしか言いようが無いんですが。。

冷静に考えたら

1.配列番号iの中身をif文で判定、A1は不要文字列なので削除←ここまでは良い

2.A2の内容は項目番号を含むのでその次のセルに対応する配列内容を切り取って結合していく

3.項目番号に適合したら結合処理を終了して、次の項目番号の次の配列番号の文章を結合していく

4.「A10D コツメカワウソ」のところから「Subsection B」までを結合する←えっ

5.処理1は適応される機会なし←エ~ドウシテ~~←あほか

てなりますよね。そうですね。

問題は恐らく「for文の中でif文が実行される流れがよく分かってなかった」ということだと思います。なんとなく全体に処理1が掛けられてから処理2が掛けられるような気がしてた。


解決方法

組んでる最中はもう全くワケワカメのまま別の方法試してたら出来ました。

処理1と処理2を別の関数にして、最終的な関数の中で処理1関数から実行すればオーケーでした。

おわり