Google スプレッドシートで JSON, HTML, XML 等を組み立てたいときに、&
や CONCATENATE
関数を用いた文字列の連結では苦しいことがあるかと思います:
{"id":1} // 値は A 列にあるセルを参照したい!
="{"&CHAR(34)&"id"&CHAR(34)&":"&A2&"}"
=CONCATENATE("{",CHAR(34),"id",CHAR(34),":",A2,"}")
C 言語 や Go 言語などには sprintf という、%d
や %s
といったフォーマット指定子を用いて文字列を組み立てる関数が備わって、簡単に文字列を組み立てることができます:
fmt.Sprintf(`{"id":%d}`, 1)
これと同様の機能を Google スプレッドシートで実現する方法を紹介します。
sprintf 関数を準備
Google スプレッドシートのメニューにある「拡張機能」→「Apps Script」を選択します:
コードエディタ上に以下のコードを貼り付けて保存してください:
function sprintf(template, ...args) {
return Utilities.formatString(template, ...args);
}
上記の sprintf
関数は、Utilities.formatString
という Apps Script のユーティリティ関数をスプレッドシート上で利用できるようにしています。
https://developers.google.com/apps-script/reference/utilities/utilities?hl=ja#formatString(String,Object...)
使い方
例として、E2 セルにフォーマット文字列を入れます:
{"id":%d}
A 列に id の数値が入っている場合、以下のような数式を入力します:
=SPRINTF($E$2,A2)
$E$2
の 2 つの $
は絶対参照のために付けており、数式を列方向・行方向どちらにコピーしてもセル参照が変化しません。
(数式入力中に E2 セルを選択している状態で F4 キーを 1 回押すと E2
が $E$2
に置き換わり、便利です1)
これで、冒頭に記載した「組み立てたい JSON」が表示されます:
{"id":1}
注意点
Apps Script で定義された関数を利用しているため、&
や CONCATENATE
関数を使う場合に比べて処理に時間がかかることがあります:
Loading... が表示される時間が許容できない場合や、簡単な文字列の結合には &
や CONCATENATE
関数を用いるのがおすすめです。
GitHub Copilot Chat に聞いてみた
GitHub Copilot Chat に対して、以下のような質問をしてみました:
Google スプレッドシートで Go 言語の fmt.Sprintf 関数のような関数を利用する方法
-
Microsoft Excel にも同様の機能があります。 ↩