Google Apps Script学習録②~特定セルの値が条件を満たす時、指定した値を入力~

ども。半年前に書いたGAS学習録の記事が、久々に確認したら1,700回ほど閲覧されていてビビっています。せっかく見てくれる方がいるなら、ということで、続きを書いてこうかなと思います。よろしくお願いします。

改めて僕のスペック:社会人4年目。大学は法学部卒で、仕事ではエンタメ企業の新規事業セクションで駆け出しプロダクトマネージャー&(一応)子会社役員。要するになんでもやるマン。ビジネスサイドの人間です。

Google Apps Script(GAS)とは、Googleが提供しているプログラミング言語で、JavaScriptを基に作られています。GoogleドキュメントやGoogleスプレッドシートなど、Googleの提供サービスと連携することができます。

例えば、「Gmailで受信したメールの本文を自動でスプレッドシートに追加する」といった処理をさせることが可能です。前回は、特定のセルに入力した値を、別のセルにコピーする処理を紹介しました。

今回は、特定セルの値が条件を満たす時、指定した値を入力する処理を紹介していこうと思います。例えば、「セルB1が空欄の時、セルA1の値を入力する」とかいう感じですね。

例により、最終的なコード例は下記の通りです。

function myFunction() {
 var ss = SpreadsheetApp.getActiveSpreadsheet();
 var sheet = ss.getSheetByName("シート1");
 var a1 = sheet.getRange(1, 1).getValue();
 var a2 = sheet.getRange(2, 1).getValue();
 var b1 = sheet.getRange(1, 2);
 if (b1.isBlank()) {
   sheet.getRange(2, 2).setValue(a1);
 } else {
   sheet.getRange(2, 2).setValue(a2);
 }
}

7行目以降が、「セルB1が空欄か否か判定し、空欄の時はセルA1の値を、そうでない時はセルA2の値を入力する」という処理になっています。

6行目までは前回の内容なので、そちらの記事をご参照ください。スプレッドシートとシートを指定して、セルA1,A2,B1の値を取得しています。

さて、特定の条件αに合致する時は処理1を、合致しない時は処理2を実行するという処理は、IF文を用いて下記のように書くことができます。

  if (α) {
  //処理1
 } else {
 //処理2
 }

英語で、ifは「もし~なら」、elseは「その他の」という意味ですね。今回はそのままで、「もしαなら処理1を、その他の場合は処理2を実行せよ」という文章になっています。

そして今回は、このαに、

b1.isBlank()

という条件を指定しています。「b1」は6行目で宣言された変数で、sheet.getRange(1,2)で、シート1のセルB1が指定されています。ここでは、getValue()していないため、あくまでセルを指定したのみで、その中に入っている値は取得していないことに注意してください。

一方で、4-5行目では、セルA1,A2についてgetValue()までしているため、セルの中に入っている値まで取得しています。

さて、上記のb1.isBlank()で用いているisBlank関数は、指定したセルが空欄=blankかどうかを調べ、空欄ならtrue、そうでないならfalseを返します。今回は、変数b1で指定したセルB1を調べ、空欄ならtrueを、空欄でないならfalseを返しているということですね。

そして、7行目の条件分岐で用いたif~else文は、条件を満たしているかをtrue/falseで判定します。条件αがtrueなら処理1を、falseなら処理2を実行するという流れです。従って今回は、b1.isBlank()がtrueすなわちセルB1が空欄なら処理1を、flaseすなわちセルB1が空欄でないなら処理2を実行します。

今回は、処理1が

sheet.getRange(2, 2).setValue(a1)

セルB2に、セルA1の値を書き込むという処理で、処理2が

sheet.getRange(2, 2).setValue(a2)

セルB2に、セルA2の値を書き込むという処理です。以上で、

画像1

上記のようにセルB1が空欄の時は、

画像2

このようにセルA1の値が、セルB2に書き込まれます。反対に、

画像3

このようにセルB1が空欄でない時は、

画像4

上記のように、セルA2の値が、セルB2に書き込まれます。

以上で、「特定セルの値が条件を満たす時、指定した値を入力」というコードを書くことができました。余談ですが、セルが空欄であるか否かの判定は、isBlank関数の他に、下記のように書くこともできます。

b1 == ""

「""」は、「"」で囲われた文字列が、データ形式として文字列(String型)となることを表しますが、今回は文字が何も入っていません。従って、空欄であることを表しています。個人的にはこっち使うことが多いです。

それから余談その2ですが、「データが何も入っていないこと」を、nullと呼びます。ここで気を付けるべきは、「ゼロとnullは異なる」ということです。値がゼロである、とは、「ゼロという値が入っている」ことを表します。一方でnullは、「そもそも値が入っていない」ことを表します。この2つは結構勘違いされがちなようなので、注意してください。

今回は以上です。また次回。



この記事が気に入ったらサポートをしてみませんか?