Google Apps Script(GAS)で、文字列を効果的に操作することは多くの場面で必要です。
この記事では、文字列結合や連結の基本から、変数埋め込みと宣言に至るまで、幅広い文字列操作テクニックを詳しく解説します。
演算子 (+)で結合する
文字列結合は、複数の文字列を結合して新しい文字列を生成する操作です。
GASでは、演算子とメソッドの両方を使ってこれを実現できます。
例えば、”Hello, ” + “world!” は “Hello, world!” という新しい文字列を作成します。
演算子 (+)
let greeting = "Hello, ";
let target = "world!";
let message = greeting + target; // "Hello, world!"
concat()で文字列を結合する
concat() メソッドを使用して文字列を連結することもできます。
String.concat(文字列)
let str1 = "Hello, ";
let result = str1.concat("world!"); // "Hello, world!"
concat()で複数の文字列を連結する
複数の文字列を順番に連結することも可能です。
String.concat(文字列,文字列)
let fullName = firstName.concat("John", "_", "Doe"); // 結果は "John_Doe"
concat()で一次元配列の要素を連結する
また、一次元配列の要素を連結する際には concat() メソッドは便利です。
Array.concat(一次元配列)
let array1 = ['pen', 'pineapple'];
let array2 = ['apple', 'pen'];
let result = array1.concat(array2); // 結果は [ 'pen', 'pineapple', 'apple', 'pen' ]
変数と文字列を連結・結合する
変数の値を文字列と結合することで、動的なテキスト生成が可能です。
let name = "Eve";
let welcomeMessage = "Welcome, ".concat(name, "!"); // 結果は "Welcome, Eve!"
同じ結果を得るために、演算子 (+)で連結・結合することもできます。
let name = "Eve";
let welcomeMessage = "Welcome, " + name + "!"; // 結果は "Welcome, Eve!"
特殊な文字列結合
concat() メソッドを使用すると、特殊な文字列結合も行えます。例えば、空白文字を挿入して文字列を整形することができます。
また、数値を文字列に変換してから結合することもできます。
let age = 25;
let message = "I am ".concat(String(age), " years old."); // 結果は "I am 25 years old."
join()で配列要素の連結をする
配列内の要素を連結して新しい文字列を生成する方法もあります。
このテクニックは、CSVフォーマットやリストの表示などでよく使用されます。
join() メソッドの基本
join() メソッドは、配列内の要素を指定した区切り文字で連結して新しい文字列を作成する方法です。
Array.join(“,”) //1次元配列を指定
// 配列を作成します
let fruits = ["apple", "banana", "orange"];
// join() メソッドを使用して配列要素を連結します
let joinedFruits = fruits.join(", "); // 結果は "apple, banana, orange"
このコードでは、join(“, “) によって要素が「, 」で区切られ、新しい文字列が生成されます。
join() によるCSVフォーマットの生成
CSV(Comma-Separated Values)は、データをカンマで区切って行に並べたものです。
join() メソッドを使用して、配列要素をCSVフォーマットとして使用することができます。
// データ配列を作成します
let data = ["John", "Doe", "john@example.com"];
// join() メソッドを使用してCSVフォーマットを生成します
let csvFormatted = data.join(","); // 結果は "John,Doe,john@example.com"
join() によるカスタム区切り文字の使用
join() メソッドは、カンマ以外の区切り文字を使用することも可能です。
例えば、タブ区切りやセミコロン区切りを生成することもできます。
Array.join(“\t”) //タブで区切られるテキスト
Array.join(“;”) //セミコロンで区切られるテキスト
// 要素がタブで区切られるテキストを生成します
let items = ["item1", "item2", "item3"];
let tabSeparated = items.join("\t"); // 結果は "item1\titem2\titem3"
// 要素がセミコロンで区切られるテキストを生成します
let semicolonSeparated = items.join(";"); // 結果は "item1;item2;item3"
多次元配列と join() メソッド
join() メソッドは多次元配列にも適用できます。これにより、テーブル形式の文字列生成などが可能です。
// 2次元配列を作成します
let tableData = [
["Alice", 25, "alice@example.com"],
["Bob", 30, "bob@example.com"]
];
// join() メソッドを使用して要素を連結し、テーブル形式の文字列を生成します
let tableFormatted = tableData.map(row => row.join(", ")).join("\n");
console.log(tableFormatted);
このコードでは、map() メソッドを使用して各行の要素を連結し、join(“\n”) によって行を改行文字で区切ってテーブル形式の文字列を生成します。
// 出力結果
Alice, 25, alice@example.com
Bob, 30, bob@example.com
join() メソッドのまとめ
- 大量の文字列を結合する場合は、性能の観点から join() メソッドを検討してください。
- 複雑な文字列結合を行う際には、可読性を損なわないように工夫しましょう。
文字列を変数に埋め込む方法
変数埋め込みは、文字列内に変数の値を埋め込む強力な手法です。これにより、ダイナミックなテキスト生成が可能になります。
変数埋め込みと通常の文字列結合と比較
通常の文字列結合と比較して、変数埋め込みは可読性と保守性が向上します。以下はその例です。
${変数}
// 通常の文字列結合
let name = "Bob";
let message = "Hello, " + name + "!"; // 結果は "Hello, Bob!"
// 変数埋め込み
let name = "Bob";
let message = `Hello, ${name}!`; // 結果は "Hello, Bob!"
テンプレートリテラルの概要
テンプレートリテラルは、バッククォート(`)で囲まれた文字列です。
通常の文字列結合よりも可読性が高く、変数の埋め込みや複数行の文字列を簡単に扱うことができます。
- 変数の埋め込み(変数展開): テンプレートリテラル内で${}を使用して変数を埋め込むことができます。これにより、変数の値を文字列に簡単に組み込むことができます。例えば、Hello, ${name}!というテンプレートリテラルは、変数nameの値を埋め込んだ文字列を生成します。
- 複数行の文字列: 通常の文字列内で改行を表すにはエスケープ文字を使用する必要がありますが、テンプレートリテラルを使用すると複数行の文字列をそのまま表現できます。
let name = "Eve";
let greeting = `Welcome, ${name}!
This is your department`;
// 結果は改行された状態を維持したまま格納されます
"Welcome, Eve!
This is your department"
変数埋め込みとテンプレートリテラルの実践例
変数埋め込みとテンプレートリテラルを組み合わせて、動的なテキスト生成を行います。
let item = "book";
let quantity = 3;
let message = `You have ${quantity} ${item}s.`; // 結果は "You have 3 books."
条件分岐や式の組み込み
テンプレートリテラル内で条件分岐や式を組み込むこともできます。
let score = 85;
let result = `Your score is ${score}. You ${score >= 60 ? 'passed' : 'failed'}.`; // 結果は "Your score is 85. You passed."
テンプレートリテラルの注意点
テンプレートリテラル内でバッククォート(`)を表示したい場合は、エスケープする必要があります。
let text = "backticks";
let output = `\`${text}\``; // 結果は "`backticks`"
テンプレートリテラルは多くの場面で便利ですが、長大なテキストを生成する際には可読性やパフォーマンスを考慮することが大切です。
最後に
Google Apps Script(GAS)での文字列操作に焦点を当て、文字列結合や連結、変数埋め込み、テンプレートリテラルの効果的な使用方法を解説しました。
文字列を変数から埋め込むことで、柔軟なテキスト生成が可能になるため、ぜひご活用ください。
