Office Scripts で正規表現を利用してセルの文字列を置換する

Office Scripts で正規表現を利用してセルの文字列を置換するコードを紹介します。

概要

Office Scriptsで正規表現を利用して文字列を置換する場合は、RegExpオブジェクトを作成し、stringオブジェクトのreplaceメソッドを呼び出し、第一引数にRegExpオブジェクトを与えます。

書式

RegExp([置換パターンの正規表現]);
または、
RegExp([置換パターンの正規表現], [パラメーター]);
パラメーターは次の値が利用できます。

パラメーター パラメータ名説明
g Globel 指定した場合、一致するすべての文字列を置換します。指定しない場合は最初に一致した文字列のみを置換します。
i IgnoreCase 指定した場合、大文字と小文字を区別しません。指定しない場合は大文字と小文字を区別します。 
m Multiline 指定した場合、^ や $ が文字列の先頭と末尾だけでなく、各行の先頭と末尾にもマッチします。
s DotAll 指定した場合、"."は改行文字にマッチします。
u Unicode 指定した場合、\u{hhhh} 形式をUnicodeコードポイントとして扱います。
y Sticky 指定した場合、文字列の現在の位置から始まる部分に一致するものを探します。

プログラム例

コード

Office Scriptsを作成し、以下のコードを記述します。
function main(workbook: ExcelScript.Workbook) {
  let sheet: ExcelScript.Worksheet = workbook.getWorksheets()[0];
  let celltext: string = sheet.getRange("C2").getValue() as string;

  let reg: RegExp = RegExp("(さくさく)");
  let resulttext = celltext.replace(reg, "「$1」");

  sheet.getRange("G2").setValue(resulttext);
}


解説

シートオブジェクトを取得します。[0]を指定しているため、一番最初のシートオブジェクト(ExcelScripts.WorkSheet)を取得します。 ExcelScripts.WorkSheetオブジェクトのgetRangeメソッドを呼び出し、ExcelScript.Rangeオブジェクトを取得します。 下記のコードではC2セルのテキストをcelltext変数に代入しています。
  let sheet: ExcelScript.Worksheet = workbook.getWorksheets()[0];
  let celltext: string = sheet.getRange("C2").getValue() as string;

RegExpオブジェクトを作成します。
  let reg: RegExp = RegExp("(さくさく)");

celltext変数の文字列を置換します。"さくさく"の文字を"「さくさく」"に置換します。
  let resulttext = celltext.replace(reg, "「$1」");

実行結果

C2セルに「ぺんぎんさくさくクッキー」を入力します。


コードエディターウィンドウの[実行]ボタンをクリックし、作成したOffice Scriptsを実行します。


G2セルに「ぺんぎん「さくさく」クッキー」の文字列が表示されます。"さくさく"を"「さくさく」"に置換できていることが確認できます。


著者
iPentec.com の代表。ハードウェア、サーバー投資、管理などを担当。
Office 365やデータベースの記事なども担当。
掲載日: 2022-12-22
iPentec all rights reserverd.