【Googleドキュメント】Apps Scriptで複数言語の同時編集!セクションごとの言語切替

【Googleドキュメント】Apps Scriptで複数言語の同時編集!セクションごとの言語切替
🛡️ 超解決

Googleドキュメントで複数の言語を扱う際に、ドキュメント全体を翻訳するのではなく、セクションごとに言語を切り替えたいと思ったことはありませんか。特に国際的なプロジェクトや多言語対応のマニュアルを作成する場合、一つのドキュメント内で言語ごとに内容を管理できると便利です。この記事では、Apps Scriptを使ってセクションごとの言語切替機能を実装する方法を、具体的なスクリプト例とともに解説します。これを読めば、ドロップダウンやメニューから簡単に言語を切り替えられるカスタム機能を自分のドキュメントに追加できるようになります。

言語切替の仕組みは、各セクションに言語タグを付けておき、選択された言語に応じて該当セクションだけを表示するというものです。Apps Scriptでドキュメントの内容を動的に変更することで、編集者全員が同じドキュメント上で作業しながら、自分の作業言語でテキストを確認できます。設定は少し複雑に感じるかもしれませんが、一度テンプレートを作れば、あとは使い回しが可能です。

【要点】Apps Scriptでセクションごとの言語切替を実装する

  • getActiveDocumentとgetBody: ドキュメントの本文を取得し、各段落のテキストを操作する基本メソッドです。
  • createMenuとaddItem: ドキュメントのメニューバーにカスタムメニューを追加し、言語切替を呼び出すトリガーを作成します。
  • showSidebar: ユーザーが言語を選択できるドロップダウンやラジオボタンを含むサイドバーを表示します。
  • replaceTextとsetText: 特定のタグやプレースホルダーを実際の言語テキストに置き換えます。

ADVERTISEMENT

Apps Scriptで言語切替を実現する仕組みと事前準備

セクションごとの言語切替は、ドキュメント内の各段落や表に言語タグ(例:[ja][en])を埋め込み、スクリプトがそのタグを読み取って表示・非表示を切り替える方式です。具体的には、すべての言語のテキストをあらかじめドキュメントに記述しておき、選択された言語以外のセクションを非表示にします。非表示方法は、段落の属性(属性名「lang」など)を設定し、スクリプトでスタイルを変更することで実現します。

事前に必要な準備は次のとおりです。まず、Googleドキュメントを開き、ツールメニューからスクリプトエディタを起動します。スクリプトエディタでは、Google Apps Scriptプロジェクトが作成され、コードを記述できるようになります。また、ドキュメント内の各セクションに言語タグを手動で挿入しておく必要があります。タグの形式は任意ですが、この記事では段落の先頭に[ja][en]のように記述し、その段落全体がその言語のセクションであることを示します。タグは表示されないようにするため、スクリプトで削除するか、文字色を白にするなどの工夫が必要です。

セクションごとの言語切替を実装する手順

1. 言語データの準備とタグ付け

ドキュメント内の各セクションを言語ごとにグループ化し、先頭に言語タグを記述します。例えば、日本語セクションなら「[ja] 見出し1」、英語セクションなら「[en] Heading 1」のようにします。タグは半角角括弧で囲み、言語コードはISO 639-1に従うことをおすすめします。複数の言語がある場合は、同じセクションに対応する段落をすべてタグ付けしてください。

2. カスタムメニューの作成

スクリプトエディタで以下のコードを記述します。このコードはドキュメントを開いたときに自動でメニューを追加します。

  1. onOpen関数の追加
    トリガーとしてonOpen()関数を定義し、DocumentApp.getUi().createMenu('言語切替').addItem('言語を選択', 'showSidebar').addToUi()を実行します。
  2. showSidebar関数の追加
    サイドバーに言語選択UIを表示する関数を定義します。HTMLサービスを使って、ラジオボタンやドロップダウンを作成します。

3. 言語切替ロジックの実装

ユーザーがサイドバーやメニューから言語を選択したときに、ドキュメント内の該当セクションだけを表示し、他を非表示にする関数を作成します。以下の流れで実装します。

  1. ドキュメント本文の取得
    DocumentApp.getActiveDocument().getBody()で本文を取得します。
  2. 全段落のループ
    getParagraphs()で全段落を取得し、各段落のテキストをチェックします。言語タグが含まれている場合、その段落に言語属性(例:setAttributes({lang: 'ja'}))を設定します。
  3. 表示切替
    選択された言語と段落の属性が一致する段落はsetForegroundColor('#000000')で表示し、一致しない段落はsetForegroundColor('#ffffff')で非表示にします。ただし、非表示にするとテキストが白くなり編集時に見えなくなるため、編集者には注意が必要です。代わりにsetHidden(true)メソッドを使うことも検討してください。

4. テストとデプロイ

スクリプトを保存し、ドキュメントをリロードします。メニューバーに「言語切替」が表示され、サイドバーが正常に動作するか確認します。複数の言語で正しく表示が切り替わることをテストしてください。必要に応じて、トリガー設定でonOpenを自動実行するようにします。

よくあるトラブルと注意点

言語タグが表示されてしまう

タグをそのまま残すとユーザーに見えてしまいます。対策として、言語切替の関数内でタグを削除するか、表示時にタグ部分だけを透過色にします。スクリプトでreplaceText('\[.*?\]', '')のように正規表現で削除すると簡単です。

セクションが多いと処理が遅い

段落数が多いドキュメントではループ処理に時間がかかる場合があります。その場合は、キャッシュやプロパティストアを使って前回の言語選択を記憶し、差分だけを更新するように最適化すると効果的です。

同時編集時の競合

複数ユーザーが同時に編集しているとき、言語切替の操作が競合する可能性があります。この対策として、スクリプトの実行権限を一部の編集者だけに制限するか、編集前に「この操作は編集者全員に影響します」という確認ダイアログを表示することをおすすめします。

ADVERTISEMENT

言語切替の方式比較

方式 メリット デメリット
段落の前景色変更(白で隠す) 簡単に実装でき、元のテキストが失われない ユーザーが白文字を選択してコピーする可能性あり
setHidden(true) メソッド 段落自体を非表示にでき、完全に見えなくなる 非表示の段落は編集者も編集できず、フォールバック表示が必要
サイドバーで内容を動的置換 ドキュメント本体をシンプルに保てる スクリプトが複雑になり、すべてのテキストをサイドバーで管理する必要あり

上記のうち、初心者には前景色変更方式がおすすめです。ただし、協業時にはsetHidden方式の方が誤操作が少なく信頼性が高いです。

まとめ

この記事では、GoogleドキュメントでApps Scriptを使ってセクションごとに言語を切り替える方法を解説しました。言語タグを段落に埋め込み、カスタムメニューとサイドバーから言語を選択するスクリプトを作成することで、多言語ドキュメントの同時編集が容易になります。特に、onOpenshowSidebarsetHiddensetForegroundColorを組み合わせることで、直感的なUIが実現できます。次のステップとして、この仕組みをテンプレート化してチームで共有したり、言語タグを自動でチェックするスクリプトを追加してみてください。


ADVERTISEMENT

📄
Googleドキュメントトラブル完全解決データベースこの記事以外にも、書式・共有・Apps Script・引用など様々な困りごとへの解決策をまとめています。逆引きに活用してください。
この記事の監修者
✍️

超解決 第一編集部

疑問解決ポータル「超解決」の編集チーム。正確な検証と、現場視点での伝わりやすい解説を心がけています。

SPONSORED