スプレッドシートの変換表からGASで簡体字を日本の常用漢字に置換する

こんなコードを書いてみました。

function replecesheetdoc(){
 const sheet = SpreadsheetApp.openByUrl('https://********');
 const actsheet = sheet.getActiveSheet();
 const DOC_URL = 'https://*********';
 const doc = DocumentApp.openByUrl(DOC_URL);
 var body = doc.getBody();
  for(let i=2;i<=400;i++){
   var kantai = actsheet.getRange(i,1).getValue();
   var nihongo = actsheet.getRange(i,2).getValue();
   body.replaceText(kantai,nihongo);
  }
}

予め、右のような表を準備しておきます。これが一番大変な作業だ。私の場合は、簡体字が全く分かっていなかったので、最初はメモ程度に記録していました。そして、簡体字が出てくる度に一つ一つ調べては、スプレッドシートに記録をしていました。





GAS(Google Apps Script)について勉強したのはつい最近の話です。他のプログラミング言語としては、JavaとCを少し、基本の部分を勉強して、実際に使うことなく現在に至ります。VBAも簡単なマクロを作った程度ですね。他にはYahooジオシティーズでhtmlのタグとかを使って、所謂、ホームページ作りをやっていたぐらいでしょうか。

もし、GASを最近勉強し始めた方がいれば、コードの解説を書いておきますので参考にしてみてください。とはいっても私自身、オブジェクト指向という概念が分かったような分かっていないような状態ですが。
・1行目は省略します。
・2行目は定数 sheetを準備し、これに利用したいスプレッドシートをURLで指定しています。実際にスプレッドシートを開いてURLをコピペして貼り付けます。(chromeだとhttps://が省略された形で表示されていますね。)”SpreadsheetApp.”は、今からスプレッドシートというアプリケーションを使いますというClassですね。
・3行目は定数actsheetに先程URL指定で呼び出したスプレッドシートをアクティブシートに変えて読み込んでいます。これによって、”Sheet"というオブジェクトとして使えます。これは、スプレッドシートのセルをgetRange(row, column)で指定するためです。
2行目の段階でもスプレッドシートは使えるのですが、この段階では返り値が、”Spreadsheet"というオブジェクトとして返ってくるのです。先程のgetRange(roe,column)が使えないんですね。
getRange(a1Notation)という形でしかセルの指定ができません。”a1Notation”は文字列なので変数の組み込み方がわかりませんでした。
・4行目はと、いっても4行目がどれなのか分かりづらくなってきました。文字列の横に行番号を打つ方法はないのでしょうか。
const DOC_URL = 'https://*********'; は、5行目のドキュメントファイルをURL指定で開くためのURLを定数で置き換えているだけです。スプレッドシート同様にopenByUrl('  ')に直接コピペでいいと思います。
・5行目のconst doc = DocumentApp.openByUrl(DOC_URL);は2行目と同様で編集したいドキュメントファイルを指定しています。私の場合は中国語の文章が書かれたファイルですね。この段階では定数 doc は”Document"というクラスのオブジェクトになっています。
・6行目のvar body = doc.getBody();で、ドキュメントの本文をbodyという変数で扱うことにしています。
・7〜10行目の for{}の部分で置換作業をしています。for文は省略します。
 まず、var kantai = actsheet.getRange(i,1).getValue();で予め作っていたシートの簡体字の部分を変数kantaiに代入しています。※私がはじめてjavaの勉強し始めた頃だと、この辺で"actsheet"ってなんだったっけ?ってなってたと思うのですが大丈夫でしょうか?actsheetはまさに今読み込みたいシートを示していて、このシートのセルの値を代入しようとしているところですね。そして、この変数kantaiには i 行目の漢字が入ります。
 var nihongo = actsheet.getRange(i,2).getValue();も同様に日本語の列の i 行目の漢字が変数nihongoに入ります。
 body.replaceText(kantai,nihongo);は置換の作業をしている文です。これで、本文中のすべてのkantaiに代入された簡体字が検索&選択されて、同時に、nihongoに代入された漢字に置き換わります。
 これがfor文によって、2行目の簡体字から順に400行目の簡体字まで置き換わっていくわけですね。解説は以上です。
 
スプレッドシートの内容を他のアプリケーションに反映させる仕組みは、同じような原理でいけると思います。色々試してみてください。

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト /  変更 )

Google フォト

Google アカウントを使ってコメントしています。 ログアウト /  変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト /  変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト /  変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。