スプレッドシートで漢字のよみがな(ふりがな)・ルビを取得する方法~GASによるオリジナル関数
Googleのスプレッドシートには、Excelのように漢字のよみがな(ふりがな)を取得する関数は用意されていません。
そこで、Google Apps Scriptによる漢字のふりがな・ルビをひらがなで取得するオリジナルの独自関数を作成しました。
どんなスプレッドシートでも簡単に導入できるよみがな取得のオリジナル関数を紹介します。
スプレッドシートにはふりがな取得するPHONETIC関数がない
Googleスプレッドシートと同様の表計算ソフトであるExcelには、漢字のよみがなやふりがな・ルビを取得するPHONETIC関数が用意されています。
このPHONETIC関数で引数に漢字が含まれたセルを指定すると、その漢字のふりがな・ルビを出力してくれます。
PHONETIC関数のふりがなの精度は100%ではないものの、漢字からふりがなを手入力でセルに打ち込むよりも圧倒的に作業時間が短縮できます。
しかし、競合サービスであるスプレッドシートにはふりがなを取得するPHONETIC関数が用意されていません。
Googleスプレッドシートは主にアメリカで開発が行われているため、言語は英語のアルファベットがベースです。
日本語のように漢字とひらがなという2種類も文字が混在していないため、そうしたよみがな・ふりがなを取得する必要性がないためと考えられます。
スプレッドシートでふりがなを取得するオリジナル関数を自作
ネット検索でスプレッドシートのふりがなを取得する方法を調べましたが、残念ながら標準の機能では存在していませんでした。
Qiitaにはgooラボのひらがな化APIを使った独自関数の作成記事がありましたが、ひらがな化APIを利用するには、gooラボに事前に登録作業が必要などとても手間がかかります。
もって簡単にスプレッドシートで漢字のふりがなを取得できるオリジナル関数ができないかと考え、ふりがな取得のオリジナル関数を自作してみました。
その結果、利用したいスプレッドシートに数十秒で導入可能なふりがな取得の独自関数を作成できました。
ひらがな化API「よみたんAPI」を使用(会員登録不要)
今回、スプレッドシートで漢字のふりがな・ルビを取得するために使用するのは、よみたんAPIというひらがな化APIです。
よみたんAPIは非商用の利用で1日のリクエスト回数が1万回以下なら、無料利用できます(企業内利用は有料)。
gooラボのように会員登録も不要なので、簡単にAPIを利用することができます。
スプレッドシートのふりがな取得オリジナル関数「getPhonetic」のコード
スプレッドシートで利用可能なGoogle Apps Scriptによるオリジナル関数getPhonetic関数のコードを紹介します。
function getPhonetic(word) {
//スペースや改行などの特殊文字はすべて取り除く
word = word.replace(/[\r\n\t\s]+/g, "");
//よみたんAPIのリクエストURLによみがなを取得したい文字をパラメータに付与
let url = "https://yomi-tan.jp/api/yomi.php?ic=UTF-8&oc=UTF-8&k=h&n=3&t=" + word;
//よみたんAPIにhttp getで漢字のよみがなをリクエストし、3つの応答結果のうち1個目を取得
let phonetic = UrlFetchApp.fetch(url).getContentText().split(",")[0];
//スプレッドシートのカスタム関数によみがなを返却
return phonetic;
}
わずか10行と簡単なGASコードですが、引数を指定したセルのデータを取得し、ふりがなAPIにリクエストして結果を出力しています。
スペースや改行コードを含んでいてもカスタム関数がエラーしないように、除去する処理を冒頭に行っています。
スプレッドシートのふりがな取得「getPhonetic」導入方法
Google Apps Scriptで作成した、ふりがな取得のgetPhonetic関数は、スプレッドシートにとても簡単に導入することができます。
1.スプレッドシートのメニューから「ツール>スクリプトエディタ」を選択します。
2.GASのスクリプトエディタが開くので、前述のコードをコピペして貼り付け、「ctrl + s」で保存します。
※プロジェクト名の入力名を求められた場合は、デフォルトの「無題のプロジェクト」または任意の名称を入力します。
3.getPhonetic導入が完了したので、任意のセルで「=getPhonetic(“ふりがなを取得したいセル")」でオリジナル関数を入力します。
このように今回自作したgetPhoneticのカスタム変数でセルに含まれた漢字のよみがな(ふりがな)を取得することができました。
セル内の改行や空白を削除する処理を行なっているため、ふりがなでは空白や改行がなくなっています。
スプレッドシートでふりがなを取得したい場合には、ネットで紹介されている方法よりも会員登録も不要で簡単・お手軽です。
まとめ・終わりに
今回、Googleスプレッドシートで漢字が含まれるセルのふりがな(ルビ)を取得する、Google Apps Scriptで自作した独自オリジナル関数を紹介しました。
非商用なら無料利用できるひらがな化APIを使い、紹介したオリジナル関数をスプレッドシートのスクリプトエディタで貼り付けるだけで「=getPhonetic()」で利用できます。
残念ながら、Excelには標準で搭載されているPHONETIC関数のようなふりがな取得の関数がありません。
ただ、今回作成したgetPhoneticのカスタム関数で同等のことが実現できるので、ふりがなを取得したい場合はぜひご活用ください。
ディスカッション
コメント一覧
大変為になりました、ありがとうございます。
ひとつお聞きしたいのですが、含まれるスペースを除去せずそのままにしたいのですがどの部分を
いじれば良いのでしょうか?(一つのセルに入力されている姓と名の間に入っているスペースをそのままにしてフリガナ化したいのです。)
word = word.replace(/[\r\n\t\s]+/g,””);
上記の\sの部分が正規表現のスペースの事かと思い削ってみましたが、エラーが出てしまいました。
もしよろしければ教えて頂けますか?
>rosten51様
コメントありがとうございます。
利用しているふりがな取得APIはリクエスト内容に、スペースや改行コードが含まれるとエラーするため、replaceで一通りの特殊文字(スペースや改行)を除去しています。
もし、スペースをそのままにしたい場合は、やり方として以下が考えられます。
※「山田 太郎」という名前のふりがなを取得する場合
①replaceメソッドでスペースを適当な半角文字(XXXXXなど)に変換(山田XXXXX太郎)
②ふりがなAPIにリクエストし、ふりがな取得(やまだXXXXXたろう)
③XXXXXといった英字はそのままなので、replaceメソッドでスペースに再変換
こちらでスペースを残したままふりがなが出力できますので、試してみて下さい。
さっそくご回答頂けて嬉しいです。私はスクリプトエディタを使えるレベルに達してないのですが、考え方のヒントを頂けたのでシート側で処理してみました。
B2に変換対象の姓名が入力されているとき以下の書式で解決しました。
=substitute(getphonetic(substitute(B2,” ”,”XXX”)),”XXX”,” ”)
時間があるときにスクリプトも学んでいこうと思いますが、とりあえず目的は達成しましたのでご報告致します。大変助かりました、ありがとうございした。
ご返信ありがとうございます。無事解決されたとのこと、よかったです。
確かにご紹介いただいた通り、substitute関数を組み合わせることで、スペースの変換・再変換が可能ですね。
私も勉強させていただきました。
こちらの記事を参考にグーグルスプレッドシートでphonetic関数が使えるようになりました。ありがとうございます。
以前別のサイトに掲載のあった方法でphonetic関数が使えるよういろいろ試したのですが、最初は使えていたのに数時間後にエラーコード400がでてフリガナが表示されなくなり、大変困っておりましたので、とても助かりました。
ひとつ質問なのですが、コード等は不勉強でさっぱりなのですが、ふりがなをカタカナで取得する方法はありますでしょうか?
>瓜様
コメントありがとうございます。
ふりがなをひらがなではなく、カタカナで取得する方法はあります。
5行目のコードを以下のように修正ください。
○修正前
○修正後
k=hはひらがなに変換し、k=kだとカタカナに変換されます。