LoginSignup
4

More than 1 year has passed since last update.

posted at

updated at

Organization

「スプレッドシートによるスクレイピング」 で、取得したデータをShift_JISからUNICODEに変換する方法

概要

スプレッドシートで簡単にスクレイピングができるIMPORTXML関数を使う際に、取得したデータの文字コードがShift_JISの場合文字化けが起きてしまいます。その問題をGoogle Apps Script(GAS)を利用してSHIFTJIS2UNICODEという独自関数を登録することにより解決しました。

手順

こちらのコードをGASにコピペして、スプレッドシートのセルからSHIFTJIS2UNICODE関数を呼び、=SHIFTJIS2UNICODE(IMPORTXML("https://en.wikipedia.org/wiki/Moon_landing", "//a/@href"))のように活用します。

詳細な手順

  1. スプレッドシートのメニューから「ツール」→「スクリプトエディタ」の順に進み、スクリプトエディタを開きます。
  2. SHIFTJIS2UNICODE.gsをコピーして、スクリプトエディタにペーストして全てを書き換えます。
  3. 登録が終われば、スプレッドシートのエディタから関数としてSHIFTJIS2UNICODE関数を呼び、=SHIFTJIS2UNICODE(IMPORTXML("https://en.wikipedia.org/wiki/Moon_landing", "//a/@href"))のように読み込みます。 スクリーンショット 2019-11-14 9.59.47.png

注意点

  • 文字コードの関係のせいか小さいカタカナの「ュ」が「?」として表示されてしまうことを確認しています。これを修正するために次のようにSUBSTITUTE関数を利用するという方法が挙げられます。 =SUBSTITUTE(SHIFTJIS2UNICODE(IMPORTXML("https://en.wikipedia.org/wiki/Moon_landing", "//a/@href")),"?","ュ")しかし元々「?」の場合も置換してしまうため注意が必要です。
  • その他にも表示が正確でない事例も存在するかもしれないので、ご注意ください。
  • 今回のコードはencoding.jsをGASで利用しています。またそのソースを直接貼り付けているためコードが長くなっています。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
4