例えばスプレッドシートから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日です!