
Googleドキュメントの文字列を、自動で一括置換するGASないかな?
Googleドキュメントでつくった文書をテンプレート化して、使いまわしたいとき、日付や名前を手作業で打ち込むのは面倒ですよね。
標準の置換機能だと、1単語ずつしか置換できないので、時間がかかります。
そこでこのページでは、Googleスプレッドシートを使って、Googleドキュメントの複数の文字列を一括置換するGASプログラムを紹介します。
すぐに使えるテンプレートファイルは、以下のリンクからアクセスできます。原本を複製して使ってみてください。


文字列置換GASの使い方
文字列置換GASの使い方を解説していきます。


ドキュメントの中に、置換対象となる変数を入力します。
変数と通常脳文章を識別するために、変数を{}で囲んでください。
この{}がないと、変数以外の場所も置換されてしまう恐れがあります。


「置換したい文字列」シートのA列に、変数を入力します。
ドキュメントの上部にある変数から入力していくと、わかりやすいと思いますよ。


「置換したい文字列」シートのB列に、置換後の文字列を入力します。


C〜E列には、それぞれ変数の場所と内容、例を入力できます。
自分以外の人とこのシートを共有する場合などに、使ってください。


「置換したい文字列」シート上部の[GASメニュー]をクリックして[変数を文字列に置換する]をクリックします。


初めてこのGASを実行する場合、以下のような画面が表示されます。


[続行]をクリックして、画面の指示に従って、承認を進めてください。
Googleの承認画面の詳しい説明は以下のページで解説しています。
画像付きで解説しているので、参考にしてみてください。


承認が終わったら、再び[GASメニュー]>[変数を文字列に置換する]をクリックして、GASを実行します。
GASの実行が終わると、ドキュメント上の変数が文字列に置換されます。
GASの解説
このGASのプログラムは以下のとおりです。
/**
* グローバル変数
*/
const SPREADSHEET = SpreadsheetApp.getActiveSpreadsheet();
// 「ドキュメントURL」シートからURLを取得する
const DOCUMENT_URL_SHEET = SPREADSHEET.getSheetByName('ドキュメントURL');
const DOCUMENT_URL = DOCUMENT_URL_SHEET.getRange(1,2).getValue();
// 「変数」シートを取得する
const VARIABLES_SHEET = SPREADSHEET.getSheetByName('置換したい文字列');
/**
* 使い方
* 1. 「ドキュメントURL」シートに、変数が書かれたGoogleドキュメントのURLを貼る
* 2. メニューバーの「GASメニュー」から「変数を文字列に置換する」をクリックする
* 3. Googleドキュメントの変数が置換される
*/
function replaceVariablesInDocs() {
// ドキュメントのURL欄が空白かどうかチェックする
if(!DOCUMENT_URL){
Browser.msgBox('注意', '「ドキュメントURL」シートのB1セルに、GoogleドキュメントのURLを入力してください。\\nその後、再びGASを実行してください。', Browser.Buttons.OK);
return;
}
// ドキュメントを取得する
let doc = DocumentApp.openByUrl(DOCUMENT_URL);
// ドキュメントのbodyを取得する
let body = doc.getBody();
// `fetchVariablesFromSpreadsheet`関数を使って、スプレッドシートから変数と文字列を取得する
let variables = fetchVariablesFromSpreadsheet();
// 取得した文字列を「検索文字列」と「置換後の文字列」に分ける
for (let i = 0; i < variables.length; i++) {
let variable = variables[i];
let searchString = '{' + variable[0] + '}';
let replaceString = variable[1];
// 「検索文字列」と「置換後の文字列」を使って、置換する
if(replaceString !== "") {
body.replaceText(searchString, replaceString);
}
}
}
/**
* スプレッドシートから変数と文字列を取得する
*/
function fetchVariablesFromSpreadsheet() {
// 表示通りの文字列を取得する
let rawData = VARIABLES_SHEET.getDataRange().getDisplayValues();
let extractedVariables = [];
// rawDataをextractedVariablesに格納していく
for (let i = 1; i < rawData.length; i++) {
extractedVariables.push(rawData[i]);
}
return extractedVariables;
}
/**
* メニューバーに機能を追加する
*/
function onOpen(){
let ui = SpreadsheetApp.getUi();
ui.createMenu('GASメニュー')
.addItem('変数を文字列に置換する', 'replaceVariablesInDocs')
.addToUi();
}
このGASの大まかな流れはこんな感じです。
- スプレッドシートとドキュメントを取得する
- 「変数」と「置換後の文字列」を取得する
- ドキュメント上の変数を文字列に置換する
参考にしたページ
ご質問があれば、コメント欄からお問い合わせください。


コメント