GASの文字列はシングルorダブルクオーテーションどちらがよい?シングルクォーテーションおすすめ理由

Google Apps Script(GAS)のString型変数に文字列を設定する場合に、シングルクオーテーションかダブルクオーテーションどちらかを使用します。

GASで文字列を扱う際にシングル又はダブルクオーテーションどちらがよいか検討してみます。

GASでは文字列をよく利用

Google Apps Script(GAS)を使った処理スクリプトでは、文字列型の変数であるString型をよく使います。

出力するメッセージやラベル情報などに加え、APIキーやトークンなども文字列なので、String変数を利用します。

Google Apps Script(GAS)でcharAtメソッドで文字列の何文字目の文字がなにかログ出力するサンプルコード

GASと併用することが多いスプレッドシートの処理では数値を扱うことが多いですが、条件分岐などで表計算のラベル情報も扱うことがあります。

そのため、GASを使ったスクリプトでは文字列を扱う機会がとても多いです。

文字列はシングルorダブルクオーテーションで囲む

Google Apps Script(GAS)において、String型変数で文字列を代入する際は、2つの方法があります。

  1. 文字列をシングルクォーテーションで囲む
  2. 文字列をダブルクオーテーションで囲む

シングルクォーテーションまたはダブルクオーテーションで囲んだ範囲が文字列として認識されます。

Google Apps Script(GAS)の文字列はシングルクォーテーション、ダブルクオーテーションどちらも利用して定義可能

もし、文字列をシングルクォーテーションかダブルクオーテーションで囲まないようにすると、GASスクリプト実行時にエラーが出力されます。

String型変数に代入する以外にも、引数として変数を使わずに文字列を指定する場合もシングルorダブルクオーテーションで囲んで指定します。

シングルクオーテーションとダブルクオーテーションどちらがよい?

では、シングルクォーテーションとダブルクオーテーション、Google Apps Script(GAS)では、どちらを文字列に使用するのがよいでしょうか?

他のプログラミング言語で歴史も長く、代表的なC言語では、文字列にはダブルクオーテーションを用いることになっています。

#include <stdio.h>

int main(){
    char str[] = "Hello World!";
    printf("%s", str);
    return 0;
}

C言語でシングルクォーテーションで囲むことができるのは「半角文字」のみです。

そのほか、オブジェクト指向型のプログラミング言語として利用シェアが大きいJavaも、同じく文字列はダブルクオーテーションを使います。

それゆえに、C言語やJavaを学んだことがある方は、GASでも文字列にダブルクオーテーションを使う方も多いです。

実際にはどちらを使っても問題ないのですが、シングルクォーテーションを利用する方がオススメな場合もあります。

GAS文字列にシングルクオーテーションがおすすめな理由

Google Apps Script(GAS)で文字列を扱う際にダブルクオーテーションではなく、シングルクォーテーションがおすすめなケースはどういった場合でしょうか?

それは、シングルクオーテーションで表現したほうが、GASスクリプトの可読性がよくなるケースです。

GASの文字列をC言語やJavaと同じようにダブルクオーテーションを使っていると、文字列内にダブルクオーテーションが含まれると、エスケープが必要になります。

エスケープ文字もGASのコードを解釈する上で、特別な意味を持つ要素を「\」を前につけることで、単なる文字として解釈させる仕組みです。

文字列をダブルクオーテーションで囲った場合、文字としての"(ダブルクオーテーション)を明示するため、「\"」と表現します。

逆に文字列をシングルクオーテーションで囲った場合、文字としての'(シングルクオーテーション)を明示するには「\’」と書きます。

ただ、GASでは文字列にダブルクオーテーションが含まれていることが多いケースがあり、そうした場合、シングルクオーテーションで文字列を囲えば、エスケープが不要です。

そうした点から、GASで文字列を扱う際には、ダブルクオーテーションよりもシングルクオーテーションのほうがエスケープを多用しなくて済んで可読性が上がります。

スクレイピングはシングルクオーテーションで可読性UP

Google Apps Script(GAS)の文字列をシングルクオーテーションで記述するとよい処理はずばり「スクレイピング」です。

GASでスクレイピングする場合は、Parserライブラリを使って、取得したい要素の前後の文字列を指定して抽出します。

※GASのParserライブラリを利用したスクレイピング手順は以下の記事で解説しています。

GASのスクレイピングでは、WebページのHTMLのClass要素やID要素で取得できず、特定文字列に挟まれた内容を取得する形で行います。

スクレイピングする際に、HTML要素の一部を文字列としてGASで利用するため、ダブルクオーテーションの利用頻度が非常に高いです。

もし、スクレイピングする際の文字列にダブルクオーテーションを用いると、エスケープ文字「\"」が大量発生します。

ダブルクオーテーションが多くなる文字列の場合は、シングルクォーテーションのほうがGoogle Apps Scriptのコードの可読性が高まるメリット

1つの文字列の中に2個以上のエスケープ文字が必要となることも多く、かなり読みづらくなります。

それに対し、GASの文字列にシングルクオーテーションを使えば、「”」はエスケープ文字にせずに表現可能です。

HTMLソースを確認し、取得したい要素の文字列をコピペするだけでスクレイピングができ、手間もかかりません。

まとめ・終わりに

今回、Google Apps Script(GAS)で文字列を扱う際に、ダブルクオーテーション「"」で囲うよりもシングルクオーテーション「’」で囲うほうがオススメな理由を紹介しました。

C言語やJavaなどの言語では文字列を扱うにはダブルクオーテーションを利用するルールがありましたが、GASはダブル・シングルクオーテーションどちらも利用できます。

ただ、GASスクリプトの可読性を考えた場合、ダブルクオーテーションを用いることが多い時にエスケープ文字の「\"」になり、読みづらくなるので、シングルクオーテーションがおすすめです。

特にGASでスクレイピングする場合は、HTMLソースの情報でスクレイピングするため、ダブルクオーテーションだとエスケープ文字が頻発してしまう恐れがあります。

そのため、シングルクオーテーションを使えば、スクレイピングではダブルクオーテーション「"」をエスケープしなくてもよいので、コードが読みやすいです。

特にスクレイピングでは取得先のHTML構造が変化して、取得方法を修正する必要があるケースもあり、保守性も求められます。

そうした点で、GASでスクレイピングするスクリプトでは可読性と保守性を考慮して、シングルクオーテーションを文字列での利用にオススメです。