QGISではGoogle Spreadsheetのデータを直接取り込むことができる。ただし、いろいろ制約はある。
Google SpreadSheet側の作業
Google SpreadSheetにてWebに公開
を選択し、以下の項目を選択する。
- 対象のシートを選択
- 形式を
カンマ区切り形式(.csv)
を選択
この段階で出てきたURLをコピーする。今回は例として https://docs.google.com/spreadsheets/d/e/hogehoge/pub?gid=0&single=true&output=csv
というURLが生成されたとします。
QGIS側での取り込み
QGISのレイヤ
->レイヤの追加
->ベクタレイヤを追加
を選択します。
ベクタレイヤ追加のダイアログで以下の項目を入力します。
- ソースタイプはファイルを選択
- ベクタデータセットで
CSV:"/vsicurl/URL"
という形式で入力CSV:"/vsicurl/https://docs.google.com/spreadsheets/d/e/hogehoge/pub?gid=0&single=true&output=csv"
- オプションの項目が増えるので、以下を入力
追加を押すとQGISのレイヤーに追加されます。なお、レイヤー名はわかりやすい名前に変更しておいてください。
また、変な位置に描画される可能性があるので、レイヤーを右クリックして、レイヤのCRSをEPSG:4326
に設定します。
QGISで再読み込み
QGISで再読み込みをする場合は、Pythonコンソールから作業が必要です。
レイヤの一覧で更新するレイヤーを選んで以下を入力。
import gdal gdal.VSICurlClearCache() iface.activeLayer().dataProvider().reloadData()
解説
QGISは多くの機能がgdal/ogrのフロントエンドとして動くため、gdal/ogr
が提供しているVirtual File System機能を用いたファイルアクセスが可能です。
/vsicurl/
はHTTPクライアントのVirtual File Systemを提供しており、それを介してアクセスすることでQGISでアクセスが可能です。
ただし、QGISのベクタデータのソースタイプのプロトコルが実質同じ機能を提供しているはずであるが、こちらはCSV
の指定ができないためエラーとなってしまう。