1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

公開されたcsvファイルをGASで読み取りスプレッドシートに転記・jsonで公開する

Posted at

はじめに

What is This

外部で公開されたcsvファイルを読み取り、シートに出力するGoogle App Scriptです。

開発の経緯

の2つを公開したところ、「CSVをGASで読み取ってGoogleスプレッドシートに転記・JSON出力したほうが良いのでは」とアドバイスをいただいたので、作成しました。技術的には上記2記事の合わせ技です。

Product

Github

参考データ

岐阜県オープンデータ
https://data.gifu-opendata.pref.gifu.lg.jp/dataset/c11223-001

how to use

csvファイルの読み込み

  • 本コードをGoogle App Scriptにコピーし、読み取りたい任意のCSVファイルのURLに変更してください
  • csvを格納し、本スクリプトを実行するとcsvを読み取り、スプレッドシートに指定した名称のシートが作成されます

(備考)APIとしてスプレッドシートを出力する方法

前回2記事と何が違うか

今回の開発では下記の2点が求められていました。

  • ①自動取得できること
  • 万が一データの更新が行われないとき、スクレイピングを停止し、Googleスプレッドシートでも手動で修正が行えること。(原則は更新しない)

公開されたcsvをGithub ActionでスクレイピングしてGithub Pagesで公開する」では①はできるが②ができず、「 Googleドライブのフォルダに格納したcsvファイルをGASで読み取りスプレッドシート->json化して出力する」では逆に①はできないが②はできました。
①も②も達成するためには、csvを取得し、最終的にGoogleスプレッドシートに出力できる必要があったため、開発しました。

技術仕様

csv2Gsheet.gs
var ss = SpreadsheetApp.getActiveSpreadsheet();
var REMOTE_SOURCES = [
  {
    'url': 'https://opendata.com/sample1.csv',
    'sheetname': 'sample1',
  },
  {
    'url': 'https://opendata.com/sample2.csv',
    'sheetname': 'sample2',
  },
  {
    'url': 'https://opendata.com/sample3.csv',
    'sheetname': 'sample3'
  },
];
var REMOTE_SOURCES_OPTIONS = {
  method : "get"
};

function CSV2Gsheet(){
  for(var i =0; i<REMOTE_SOURCES.length; i++){    
    response = UrlFetchApp.fetch(REMOTE_SOURCES[i].url, REMOTE_SOURCES_OPTIONS);
    var sheetName = REMOTE_SOURCES[i].sheetname;
    var sh = ss.getSheetByName(sheetName);
    if(sh == null)
    {
      ss.insertSheet(sheetName);
      sh = ss.getSheetByName(sheetName);
    } 
    var data = response.getContentText("Shift_JIS"); 
    var csv = Utilities.parseCsv(data);
    sh.getRange(1,1,csv.length,csv[0].length).setValues(csv);
  }
}
  • githubには実際に参照しているデータを掲載しています
  • 参照するデータのURLと、転記するGoogleスプレッドシートのシート名を明記する
  • シートが無ければ新たにシートを作成。シートがあれば上書きする。(clearしない。万が一の場合は手動で行追加も念頭に置くため)
1
1
0

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
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?