Help us understand the problem. What is going on with this article?

Google Spreadsheets 漢字に読み仮名(ひらがな・カタカナ)を付けるカスタム関数を作った

More than 3 years have passed since last update.

convert_hiragana_katakana_custom_function_google_spreadsheets.gif

これはなに?

いわゆるMicrosoft Excelで言うところのPHONETIC関数です。
漢字を含むテキスト・セルを指定することで、読み仮名を出力することができます。読み仮名はひらがなのふりがなでもカタカナのフリガナでも大丈夫です。

典型的な利用シーンとしては、住所録で氏名の読み仮名を自動で(それなりに)ふりたい、というシーンがあります。ちょうど年賀状シーズンの住所録でふりがなが必要になったりしていると思いますが、ローカルのExcelではなくGoogleスプレッドシートで管理している方も多いでしょう。ExcelにはPHONETIC関数があるのにGoogleスプレッドシートには同様の機能が無いのです。

機能

  • 漢字を含むテキスト(セル)をひらがなへ変換 =HIRAGANA(input)
  • 漢字を含むテキスト(セル)をカタカナへ変換 =KATAKANA(input)
  • フラグで変換先(ひらがな/カタカナ)を指定して変換 =KANA(input, flag)

使い方

このカスタム関数はgooラボのひらがな化APIを利用しています。そのため、gooラボでのアプリケーションIDの発行とGoogle Spreadsheetsへのカスタム関数登録の2ステップで使えるようになります。

  1. gooラボ アプリケーションID発行
  2. Google Spreadsheetsへカスタム関数登録

gooラボ アプリケーションID発行

gooラボAPI利用登録ページへアクセスし、利用規約をよく読んだ上で登録を行います(登録にはGitHubアカウントが必要です)。
goolab_apiregister.jpg

GitHubの認証画面が表示されるのでAuthorizeボタンを押します。
github_authorize.jpg

登録が完了すると、アプリケーションIDが発行されて画面に表示されるのでコピーしておきます。
goolab_applicationid.jpg

この手順は、一度だけ実行すれば二度目以降は不要になります。

Google Spreadsheetsへカスタム関数登録

続いて、実際にGoogleスプレッドシート上で各カスタム関数を使えるようにします。

まず、適当なGoogle スプレッドシートを開きます。新規作成でも構いません。今回のカスタム関数は利用するスプレッドシート(Excelで言うところのBook)毎に利用設定が必要ですのでご注意下さい。
google_spreadsheets.png

次に、メニューバーの「ツール」から「スクリプト エディタ」を選択します。
google_spreadsheets_script_editor.jpg

すると、下図のような画面が開きます。別サービスに移動したように見えますが心配いりません。
google_app_script_console.png

以下のように記載されている部分を選択して削除してから、後述のスクリプトをコピー&ペーストしてください。

function myFunction() {

}

上記を削除して、下記をコピー&ペーストします。

var perform = function(output_type, sentence) {
  var endpoint = "https://labs.goo.ne.jp/api/hiragana";
  var payload = {
    "app_id": "ここにgooラボアプリケーションIDをペースト",
    "sentence": sentence,
    "output_type": output_type
  };
  var options = {
    "method": "post",
    "payload": payload
  };

  var response = UrlFetchApp.fetch(endpoint, options);
  var response_json = JSON.parse(response.getContentText());
  return response_json.converted;
};

/**
 * Convert Japanese KANJI to HIRAGANA by goo LAB API.
 *
 * @param {string} input The value of cell to convert.
 * @return The converted value that HIRAGANA.
 * @customfunction
 * @author Noriaki UCHIYAMA (twitter: @noriaki)
 */
function HIRAGANA(input) {
  return perform("hiragana", input);
}

/**
 * Convert Japanese KANJI to KATAKANA by goo LAB API.
 *
 * @param {string} input The value of cell to convert.
 * @return The converted value that KATAKANA.
 * @customfunction
 * @author Noriaki UCHIYAMA (twitter: @noriaki)
 */
function KATAKANA(input) {
  return perform("katakana", input);
}

/**
 * Convert Japanese KANJI to HIRAGANA/KATAKANA by goo LAB API.
 *
 * @param {string} input The value of cell to convert.
 * @param {boolean} output_type The flag of convert type. TRUE: HIRAGANA, FALSE: KATAKANA.
 * @return The converted value that specified in output_type param.
 * @customfunction
 * @author Noriaki UCHIYAMA (twitter: @noriaki)
 */
function KANA(input, output_type) {
  output_type = output_type ? "hiragana" : "katakana";
  return perform(output_type, input);
}

さらに1箇所だけ修正します。下図の反転選択されている部分を、先ほど発行したgooラボアプリケーションIDで置き換えます。
google_app_script_console_pasted.jpg

英数字の羅列のアプリケーションIDをペーストするとこんな感じです(自身のアプリケーションIDは非公開情報なので一部マスクしています)。
google_app_script_console_pasted_applicationid.jpg

「ファイル」→「保存」(またはCtrl+S/Command+S)すると、下図のようにプロジェクト名を聞いてくるので、適当な名前を付けて「OK」をクリックします(デフォルト名称のままでもOKです)。
google_app_script_project_name.png

おめでとうございます。これで完了です。

利用方法は冒頭のGIFをご覧いただくと分かるかと思いますので再掲しておきますね。
convert_hiragana_katakana_custom_function_google_spreadsheets.gif

別のスプレッドシートで利用する時は、gooラボアプリケーションID入りのコードを直接コピー&ペーストすれば、ほとんどの手順が省略でき、「スクリプトエディタを開く」→「アプリケーションID入りのコードをペーストして保存」だけでOKですね。

簡単ですがGoogle Apps Scriptの利用例として、皆さま良いGoogleスプレッドシート生活を!!

参考情報

noriaki
仕事はマーケターなので基本的にコードは書いてません。Qiitaへの投稿は個人の趣味としての開発に関係するものです。したがって、特に明示しない限り所属する企業や団体には一切関係ありません。
http://blog.noriaki.me
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away