Google Spreadsheetで日本語の氏名を一括でローマ字変換する方法

日本語の氏名をローマ字表記に変換する作業は、英語での書類作成や海外とのやり取りでよく必要になります。複数の名前を手作業で変換するのは時間がかかりますが、Google Spreadsheetを使えば簡単に一括変換できます。この記事では、その方法を詳しく解説します。

目次

  1. 基本的な方法:関数を使用する
  2. 外部ツールを利用する方法
  3. Google Apps Scriptを使った高度な変換方法
  4. よくある問題と解決策

1. 基本的な方法:関数を使用する

必要な準備

  • 日本語の氏名が入力されたGoogle Spreadsheet
  • インターネット接続

手順

1-1. GOOGLETRANSLATE関数を使う方法

最も簡単な方法は、Google Spreadsheetの翻訳機能を利用することです。

=GOOGLETRANSLATE(A2, "ja", "en")

この関数を使うと、A2セルの日本語テキストを英語に翻訳します。ただし、この方法では名前の音訳ではなく意味訳になる場合があります。例えば「田中」が「rice field middle」のように翻訳されてしまうことがあります。

1-2. ROMANJI関数(カスタム関数)を作成する

より正確なローマ字変換のためには、カスタム関数を作成しましょう。

  1. スプレッドシートで「ツール」→「スクリプトエディタ」を選択
  2. 以下のコードを貼り付け
/**
 * 日本語をローマ字に変換する関数
 * @param {string} input 日本語テキスト
 * @return {string} ローマ字テキスト
 * @customfunction
 */
function ROMANJI(input) {
  if (!input) return "";
  
  // Google翻字APIを使用
  var url = "https://inputtools.google.com/request?text=" + 
            encodeURIComponent(input) + "&itc=ja-t-i0-und&num=1";
  
  try {
    var response = UrlFetchApp.fetch(url);
    var data = JSON.parse(response.getContentText());
    
    if (data[0] === "SUCCESS") {
      var result = data[1][0][1][0];
      return result;
    }
    return input;
  } catch (e) {
    return "Error: " + e.toString();
  }
}
  1. 保存して閉じる
  2. スプレッドシートに戻り、ローマ字に変換したいセルに以下の関数を入力
=ROMANJI(A2)

この方法では、Google翻字APIを使って、より正確なローマ字変換が可能です。

2. 外部ツールを利用する方法

多くの名前を処理する場合は、外部ツールを利用する方法も効果的です。

手順

  1. 日本語の氏名データをCSVでエクスポート
  2. 以下のようなオンラインツールを利用
  3. 変換されたデータをGoogle Spreadsheetにインポート

3. Google Apps Scriptを使った高度な変換方法

より細かいカスタマイズが必要な場合は、Google Apps Scriptを使用して独自の変換ロジックを実装できます。

/**
 * 日本語の氏名をヘボン式ローマ字に変換するスクリプト
 */
function convertNamesToRomaji() {
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  const dataRange = sheet.getDataRange();
  const values = dataRange.getValues();
  
  // ヘボン式変換マップ
  const hepburnMap = {
    'あ':'a', 'い':'i', 'う':'u', 'え':'e', 'お':'o',
    'か':'ka', 'き':'ki', 'く':'ku', 'け':'ke', 'こ':'ko',
    'さ':'sa', 'し':'shi', 'す':'su', 'せ':'se', 'そ':'so',
    'た':'ta', 'ち':'chi', 'つ':'tsu', 'て':'te', 'と':'to',
    'な':'na', 'に':'ni', 'ぬ':'nu', 'ね':'ne', 'の':'no',
    'は':'ha', 'ひ':'hi', 'ふ':'fu', 'へ':'he', 'ほ':'ho',
    'ま':'ma', 'み':'mi', 'む':'mu', 'め':'me', 'も':'mo',
    'や':'ya', 'ゆ':'yu', 'よ':'yo',
    'ら':'ra', 'り':'ri', 'る':'ru', 'れ':'re', 'ろ':'ro',
    'わ':'wa', 'を':'wo', 'ん':'n',
    'が':'ga', 'ぎ':'gi', 'ぐ':'gu', 'げ':'ge', 'ご':'go',
    'ざ':'za', 'じ':'ji', 'ず':'zu', 'ぜ':'ze', 'ぞ':'zo',
    'だ':'da', 'ぢ':'ji', 'づ':'zu', 'で':'de', 'ど':'do',
    'ば':'ba', 'び':'bi', 'ぶ':'bu', 'べ':'be', 'ぼ':'bo',
    'ぱ':'pa', 'ぴ':'pi', 'ぷ':'pu', 'ぺ':'pe', 'ぽ':'po',
    'きゃ':'kya', 'きゅ':'kyu', 'きょ':'kyo',
    'しゃ':'sha', 'しゅ':'shu', 'しょ':'sho',
    'ちゃ':'cha', 'ちゅ':'chu', 'ちょ':'cho',
    'にゃ':'nya', 'にゅ':'nyu', 'にょ':'nyo',
    'ひゃ':'hya', 'ひゅ':'hyu', 'ひょ':'hyo',
    'みゃ':'mya', 'みゅ':'myu', 'みょ':'myo',
    'りゃ':'rya', 'りゅ':'ryu', 'りょ':'ryo',
    'ぎゃ':'gya', 'ぎゅ':'gyu', 'ぎょ':'gyo',
    'じゃ':'ja', 'じゅ':'ju', 'じょ':'jo',
    'びゃ':'bya', 'びゅ':'byu', 'びょ':'byo',
    'ぴゃ':'pya', 'ぴゅ':'pyu', 'ぴょ':'pyo'
  };
  
  // カタカナ変換用の対応表
  const katakanaMap = {
    'ア':'あ', 'イ':'い', 'ウ':'う', 'エ':'え', 'オ':'お',
    'カ':'か', 'キ':'き', 'ク':'く', 'ケ':'け', 'コ':'こ',
    'サ':'さ', 'シ':'し', 'ス':'す', 'セ':'せ', 'ソ':'そ',
    'タ':'た', 'チ':'ち', 'ツ':'つ', 'テ':'て', 'ト':'と',
    'ナ':'な', 'ニ':'に', 'ヌ':'ぬ', 'ネ':'ね', 'ノ':'の',
    'ハ':'は', 'ヒ':'ひ', 'フ':'ふ', 'ヘ':'へ', 'ホ':'ほ',
    'マ':'ま', 'ミ':'み', 'ム':'む', 'メ':'め', 'モ':'も',
    'ヤ':'や', 'ユ':'ゆ', 'ヨ':'よ',
    'ラ':'ら', 'リ':'り', 'ル':'る', 'レ':'れ', 'ロ':'ろ',
    'ワ':'わ', 'ヲ':'を', 'ン':'ん',
    'ガ':'が', 'ギ':'ぎ', 'グ':'ぐ', 'ゲ':'げ', 'ゴ':'ご',
    'ザ':'ざ', 'ジ':'じ', 'ズ':'ず', 'ゼ':'ぜ', 'ゾ':'ぞ',
    'ダ':'だ', 'ヂ':'ぢ', 'ヅ':'づ', 'デ':'で', 'ド':'ど',
    'バ':'ば', 'ビ':'び', 'ブ':'ぶ', 'ベ':'べ', 'ボ':'ぼ',
    'パ':'ぱ', 'ピ':'ぴ', 'プ':'ぷ', 'ペ':'ぺ', 'ポ':'ぽ',
    'キャ':'きゃ', 'キュ':'きゅ', 'キョ':'きょ',
    'シャ':'しゃ', 'シュ':'しゅ', 'ショ':'しょ',
    'チャ':'ちゃ', 'チュ':'ちゅ', 'チョ':'ちょ',
    'ニャ':'にゃ', 'ニュ':'にゅ', 'ニョ':'にょ',
    'ヒャ':'ひゃ', 'ヒュ':'ひゅ', 'ヒョ':'ひょ',
    'ミャ':'みゃ', 'ミュ':'みゅ', 'ミョ':'みょ',
    'リャ':'りゃ', 'リュ':'りゅ', 'リョ':'りょ',
    'ギャ':'ぎゃ', 'ギュ':'ぎゅ', 'ギョ':'ぎょ',
    'ジャ':'じゃ', 'ジュ':'じゅ', 'ジョ':'じょ',
    'ビャ':'びゃ', 'ビュ':'びゅ', 'ビョ':'びょ',
    'ピャ':'ぴゃ', 'ピュ':'ぴゅ', 'ピョ':'ぴょ',
    'ッ':'っ', '・':'', ' ':' '
  };
  
  // 氏名をローマ字に変換する関数
  function nameToRomaji(name) {
    // まず、APIを使ってひらがなに変換
    const url = "https://inputtools.google.com/request?text=" + 
                encodeURIComponent(name) + "&itc=ja-t-i0-und&num=1";
    
    try {
      const response = UrlFetchApp.fetch(url);
      const data = JSON.parse(response.getContentText());
      
      if (data[0] === "SUCCESS") {
        let kana = data[1][0][1][0];
        
        // ひらがなをヘボン式ローマ字に変換(独自の変換ロジック)
        // さらに氏名のフォーマットをするロジックを追加できます
        // 例:「たなか はなこ」→「Tanaka Hanako」
        
        return kana.toUpperCase(); // ここでは簡易的に大文字にするだけ
      }
      return name;
    } catch (e) {
      return "Error: " + e.toString();
    }
  }
  
  // スプレッドシートのデータを処理
  for (let i = 1; i < values.length; i++) {  // ヘッダー行をスキップ
    const name = values[i][0];  // A列から氏名を取得
    if (name) {
      const romaji = nameToRomaji(name);
      sheet.getRange(i+1, 2).setValue(romaji);  // B列にローマ字を設定
    }
  }
}

このスクリプトを実行するには、「実行」ボタンをクリックするか、カスタムメニューを作成して実行できます。

4. よくある問題と解決策

4-1. 長音の扱い

日本語の「ー」(長音)の扱いは注意が必要です。一般的には以下のルールを適用します:

  • 「あ」の後の長音 → ā または aa(例:「おかあさん」→「okāsan」または「okaasan」)
  • 「い」の後の長音 → ī または ii(例:「おにいさん」→「onīsan」または「oniisan」)
  • 「う」の後の長音 → ū または uu(例:「しゅうり」→「shūri」または「shuuri」)

パスポート表記ではマクロンを使わないのが一般的です。

4-2. 特殊な名前の処理

読み方が複数ある名前(例:「上野」が「うえの」か「かみの」か)は正確に変換できないことがあります。以下の方法で対処します:

  1. 事前に読み方(ふりがな)を別列に用意する
  2. ふりがなからローマ字への変換を行う

まとめ

Google Spreadsheetを使って日本語の氏名を一括でローマ字変換する方法は複数あります。シンプルな方法から高度なスクリプトを使う方法まで、状況に応じて適切な方法を選ぶことができます。

特に多くの名前を処理する必要がある場合は、Google Apps Scriptを使ったカスタム関数が非常に便利です。ぜひ試してみてください。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

You might also like