Movatterモバイル変換


[0]ホーム

URL:


自動化厨のプログラミングメモブログ │ CODE:LIFE

Python/VBA/GAS/JavaScript/Raspberry Piなどで色んなことを自動化

日本の祝日CSVをスプレッドシートに自動読み込みするGAS関数(文字化け回避)Webスクレイピング超入門②

前回、内閣府の提供する祝日一覧CSVデータ(国民の祝日について - 内閣府)を=IMPORTDATA("https://www8.cao.go.jp/chosei/shukujitsu/syukujitsu.csv") で読み込もうとしましたが文字化けしてしまって使い物になりませんでした。

codelife.cafe

今回はGASを用いることで文字化けを回避し、スプレッドシート上に祝日一覧データを自動取得できるようにしてみます。

いつもどおり細かいことはさておき実際のスプレッドシートを見たいという方はこちらのシートをコピーしてお試しください。

Shift_JISのCSVデータをインポートするGAS関数 - Google スプレッドシート

完成形は↓のようなイメージです。

オリジナルの関数 importCsv

コード

処理内容は以下の通り。

  1. URLを指定してCSVデータを取得
  2. 文字コードを指定(Default: Shift_JIS)してテキストデータを抽出
  3. GASのUtilities.parseCsv を用いてCSVを2次元配列に変換
  4. 出力する開始行番号を指定(Default: 1)して返す
/** * 指定されたURLのCSVファイルを、指定された文字コードで読み込み、二次元配列として返します。 * * @param {string} url CSVファイルのURL * @param {string} [encoding="Shift_JIS"] 文字コード (UTF-8, Shift_JIS) * @param {number} [headerRow=1] ヘッダー行番号 * @return {string[][]} CSVデータの二次元配列 */functionimportCsv(url, encoding="Shift_JIS", headerRow=1){// URLからコンテンツを取得const response= UrlFetchApp.fetch(url);const content= response.getContentText(encoding);// CSVをパースconst csvData= Utilities.parseCsv(content);// 指定された行数からデータを返すreturn csvData.slice(headerRow-1);}

設定手順と使い方

① 上部メニューからGoogle Apps Scriptの画面を開く

上部メニューからGoogle Apps Scriptの画面を開く

② コード.gs に前述のコードを貼り付ける

コード.gs に前述のコードを貼り付ける

③ スプレッドシートの任意の場所に関数を設定=importCsv("https://www8.cao.go.jp/chosei/shukujitsu/syukujitsu.csv")

これで日付と祝日の名称が文字化けせずに出力される!

おまけの機能 headerRow

キレイなCSVデータの場合は不要ですが、そうでない場合も多々あります。

例えば最初の1~5行目はサマリーデータ(◯月×日~△月□日のレポート みたいな文言とか)になっている場合、実際にスプレッドシートに読み込んでほしいのは6行目から下だけ...とか。

このとき、第3引数に6 を指定することで6行目から下だけを抽出できるようにしています。

=importCsv("https://www8.cao.go.jp/chosei/shukujitsu/syukujitsu.csv","Shift_JIS",6)

SEARCH
PROFILE
id:maru0014はてなブログPro

プロフィール
元バリスタのITエンジニア。自動化厨。

最近は情報システム部門のお仕事がメインのためPowerShell、GASなどを勉強中。

コーヒーブログ「MaruPresso」
もやっています。

RANKING

引用をストックしました

引用するにはまずログインしてください

引用をストックできませんでした。再度お試しください

限定公開記事のため引用できません。

読者です読者をやめる読者になる読者になる

[8]ページ先頭

©2009-2025 Movatter.jp