Office Scripts で正規表現を利用してセルの文字列を置換する
Office Scripts で正規表現を利用してセルの文字列を置換するコードを紹介します。
概要
Office Scriptsで正規表現を利用して文字列を置換する場合は、RegExpオブジェクトを作成し、stringオブジェクトのreplaceメソッドを呼び出し、第一引数に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やデータベースの記事なども担当。