前回、内閣府の提供する祝日一覧CSVデータ(国民の祝日について - 内閣府)を=IMPORTDATA("https://www8.cao.go.jp/chosei/shukujitsu/syukujitsu.csv")
で読み込もうとしましたが文字化けしてしまって使い物になりませんでした。
今回はGASを用いることで文字化けを回避し、スプレッドシート上に祝日一覧データを自動取得できるようにしてみます。
いつもどおり細かいことはさておき実際のスプレッドシートを見たいという方はこちらのシートをコピーしてお試しください。
Shift_JISのCSVデータをインポートするGAS関数 - Google スプレッドシート
完成形は↓のようなイメージです。
処理内容は以下の通り。
Utilities.parseCsv
を用いてCSVを2次元配列に変換/** * 指定された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の画面を開く
② コード.gs に前述のコードを貼り付ける
③ スプレッドシートの任意の場所に関数を設定=importCsv("https://www8.cao.go.jp/chosei/shukujitsu/syukujitsu.csv")
これで日付と祝日の名称が文字化けせずに出力される!
キレイなCSVデータの場合は不要ですが、そうでない場合も多々あります。
例えば最初の1~5行目はサマリーデータ(◯月×日~△月□日のレポート みたいな文言とか)になっている場合、実際にスプレッドシートに読み込んでほしいのは6行目から下だけ...とか。
このとき、第3引数に6
を指定することで6行目から下だけを抽出できるようにしています。
=importCsv("https://www8.cao.go.jp/chosei/shukujitsu/syukujitsu.csv","Shift_JIS",6)
元バリスタのITエンジニア。自動化厨。
最近は情報システム部門のお仕事がメインのためPowerShell、GASなどを勉強中。
コーヒーブログ「MaruPresso」
もやっています。
引用をストックしました
引用するにはまずログインしてください
引用をストックできませんでした。再度お試しください
限定公開記事のため引用できません。