例えばスプレッドシートからGoogle Apps Scriptでメールを送信するとき、メール文面を柔軟に変更できると便利です。そこで、テンプレート文字列をセルに直接記述し、そのプレビューを別のセルで確認できるようにしてみます。文面をスプレッドシート上で工夫できるようになります。
テンプレートの例
テンプレートとして、以下の文字列を準備します。変数nicknameとdateを使っています。変数は{{と}}で囲います。
ようこそ、{{nickname}}さん!
今日は{{date}}です!
スプレッドシートの準備
変数は、変数名と値を並べて書きます。
テンプレート文字列もセルに記述しておきます。
| A | B | C | |
|---|---|---|---|
| 1 | 変数1 | nickname | ほげほげ |
| 2 | 変数2 | date | =TEXT(TODAY(), "yyyy年m月d日") |
| 3 | テンプレート | ようこそ、... | |
| 4 | プレビュー | (プレビューをここに表示) |
- セル
B1に変数nicknameを、セルC1にその値としてほげほげと入力します。 - セル
B2に変数dateを、セルC2にその値として=TEXT(TODAY(), "yyyy年m月d日")と入力します。 - セル
B3にテンプレート文字列を記述します。 - セル
B4に、テンプレートに変数を適用した結果を表示します。
セルB4にはRENDER関数を入力します。引数は2つで、変数の領域B1:C2と、テンプレートのセル名C3です。ではRENDER関数を実装していきましょう。
RENDER関数の準備
スプレッドシートの上部メニュー 拡張機能 > Apps Script を選択し、スクリプトエディターを起動します。以下のコードを記述して保存します。
Code.gs
function RENDER(template, rows) {
let result = template;
rows.forEach(row => {
const [ variable, value ] = row;
result = result.replace(new RegExp('{{' + variable + '}}', 'g'), value);
});
return result;
}
スプレッドシートに戻り、セルC4でRENDER関数を呼び出します。
| A | B | C | |
|---|---|---|---|
| 4 | 結果 | =RENDER(B1:C2, C3) |
するとセルC4に以下のように表示されます。
ようこそ、ほげほげさん!
今日は2023年3月30日です!
