MENU

GASでGoogleドキュメントの文字を置換するテンプレート

GASでGoogleドキュメントの文字を置換する記事のアイキャッチ画像
悩む男性

Googleドキュメントの文字列を、自動で一括置換するGASないかな?

Googleドキュメントでつくった文書をテンプレート化して、使いまわしたいとき、日付や名前を手作業で打ち込むのは面倒ですよね。

標準の置換機能だと、1単語ずつしか置換できないので、時間がかかります。

そこでこのページでは、Googleスプレッドシートを使って、Googleドキュメントの複数の文字列を一括置換するGASプログラムを紹介します。

すぐに使えるテンプレートファイルは、以下のリンクからアクセスできます。原本を複製して使ってみてください。

【原本】置換する文字列の設定シート
【原本】文字列置換ドキュメント

目次

文字列置換GASの使い方

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

STEP
原本を複製する
STEP
文字列置換ドキュメントのURLを「ドキュメントURL」シートのB1セルに貼る
GASでGoogleドキュメントの文字を置換する手順1
STEP
文字列置換ドキュメントに置換対象の変数を入力する

ドキュメントの中に、置換対象となる変数を入力します。

変数と通常脳文章を識別するために、変数を{}で囲んでください。

この{}がないと、変数以外の場所も置換されてしまう恐れがあります。

GASでGoogleドキュメントの文字を置換する手順2
STEP
「置換したい文字列」シートのA列に変数を入力する

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

ドキュメントの上部にある変数から入力していくと、わかりやすいと思いますよ。

GASでGoogleドキュメントの文字を置換する手順3
STEP
「置換したい文字列」シートのA列に置換後の文字列を入力する

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

GASでGoogleドキュメントの文字を置換する手順4
STEP
必要なら、C〜E列に変数の場所や内容、例を入力する

C〜E列には、それぞれ変数の場所と内容、例を入力できます。

自分以外の人とこのシートを共有する場合などに、使ってください。

GASでGoogleドキュメントの文字を置換する手順5
STEP
[GASメニュー]>[変数を文字列に置換する]をクリックする

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

GASでGoogleドキュメントの文字を置換する手順6
STEP
Google承認画面を進めていく

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

GASの実行を承認するための画面1

[続行]をクリックして、画面の指示に従って、承認を進めてください。

Googleの承認画面の詳しい説明は以下のページで解説しています。

画像付きで解説しているので、参考にしてみてください。

承認が終わったら、再び[GASメニュー]>[変数を文字列に置換する]をクリックして、GASを実行します。

STEP
ドキュメント上の変数が置換される

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の大まかな流れはこんな感じです。

  • スプレッドシートとドキュメントを取得する
  • 「変数」と「置換後の文字列」を取得する
  • ドキュメント上の変数を文字列に置換する

参考にしたページ

ご質問があれば、コメント欄からお問い合わせください。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

コメント

コメントする

コメントは日本語で入力してください。(スパム対策)

CAPTCHA

目次