CSVファイルをGoogle Spereadsheetに読み込む方法
Spreadsheetを開いてメニュー→ファイル→インポートをクリックしてローカルにあるCSVを選択して開けば読み込むことが出来るが定期的に更新しているCSVファイルを読み込みたい時にはこの方法だと手間が掛かりすぎるので自動で何とかならないものか探してみると下記2つの記事を見つけたので実装したコードを紹介します。
特定のCSVを定期的にGoogle Spreadsheetへ自動で更新する方法【GAS】 | ちぇ・ゲバ男のメモ
スプレッドシート:csvファイル読み込み | つれづれなる日々
前 提
- CSVはオンラインでアクセスできるURL
- CSVフォーマット
- 区切り記号はカンマ(,)
- 各項目がダブルクオーテーションにて囲まれている
- 項目内に改行あり ※これ重要
今回読み込むCSVファイル
各自治体や公的機関の発表数値を基にNHKがまとめた国内感染者数データ
コード
function auto_csv(){
var ss = SpreadsheetApp.getActiveSpreadsheet();
// csvファイルを読み込むシート名をセット
var sh = ss.getSheetByName('陽性者数');
// 読み込むcsvファイルの文字コードをセット
var charset = "utf-8";
// 読み込むcsvのurlをセットしてUrlFetchAppクラスに渡す
var url = "https://www3.nhk.or.jp/n-data/opendata/coronavirus/nhk_news_covid19_domestic_daily_data.csv";
var responce = UrlFetchApp.fetch(url);
// データ取得
var csv_data = responce.getContentText(charset);
// 2次元配列に転換
var ary = Utilities.parseCsv(csv_data);
// シートに反映
sh.getRange(1,1,ary.length,ary[0].length).setValues(ary);
}
読み込むCSVファイルによって文字化けを防ぐ方法
文字コードを指定しないと文字化けを起こすので読み込むCSVファイルの文字コードを調べて、その文字コードをコード内の文字コードをセットの箇所に入れることで文字化けを防ぐことが出来るようになりました。
Spreadsheetのスクリプトエディタに登録して実行してみる
- 上記のコードをコピーしてSpreadSheetのメニュー→ツール→スクリプトエディタをクリックしてApps Scriptを開いてコードを貼り付ける。
- Spreadsheetのシート名を陽性者数に変更する。
- スクリプトエディタ上部の実行ボタンをクリック。
- 実行ログにエラーが出なかったらOKです。
定期的に読み込みする為にトリガーを追加する
- Apps Scriptの左側にあるメニューのトリガーをクリック。
- トリガー画面が出たら右下のトリガーを追加ボタンをクリック。
- イベントのソースを選択の箇所で時間主導型を選択する。
- 時間ベースのトリガーのタイプを選択で時間ベースのタイマーを選択する。
- 時間の間隔を選択(時間)で4時間を選択する。
- 右下の保存をクリックするとトリガーが作成される。
- 設定した時間(4時間毎)でスクリプトが自動実行される。
ノーコードツールGlideと連携してみた
このスプレッドシートをノーコードツールGlideと連携して作ってみたPWAアプリが下記リンクです。良ければ見て下さい。(^^)
ノーコードツールGLIDEでコロナ感染者数を閲覧するアプリを作ってみた