LoginSignup
6
8

More than 3 years have passed since last update.

Rからgoogle driveのデータにアクセスする

Last updated at Posted at 2017-12-29

[本記事の内容は最新版のGoogle drive api v3 (2019年11月時点)には対応していません。]

Rにgoogledriveというパッケージがあります。
これを使えば、ローカル(分析環境上)に保存してなくgoogle drive上のみにあるデータを一時的にダウンロードしてRで分析し、最終的にgoogle driveにアップロードすることが可能です。まあなにがいいかというとローカル(分析環境上)にインプット/アウトプットデータを保持しなくていいということですね。

Google driveのアクセス権を取得

Rを起動している環境からweb browserが使用可能な場合

library(googledrive)

##まずはgoogledrive上のデータリストを取得してみる
drive_find(n_max = 50)

##この際にアクセス権の取得プロセスが起動する
Use a local file ('.httr-oauth'), to cache OAuth access credentials between R sessions?

1: Yes
2: No

Selection: 1

あとはweb browserが起動し、そのまま進めていけばOK

Rを起動している環境からweb browserが使用できない場合(クラウドマシーンやサーバーなど)

options(httr_oob_default=TRUE) ##このオプションが必要


Please point your browser to the following url: 

  https://accounts.google.com/o/oauth2/auth?client_id=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

##上記のようにurlが与えられるので、ローカルのweb browserからアクセスし、コードを取得
Enter authorization code: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Google drive上のデータをダウンロードする


#データ名のリストを取得
drive_find( n_max=50)

#まずはマニュアルどおり(ここはマニュアルそのまんま)
##名前で検索
drive_find(pattern = "chicken") ##なんでchickenなんだろ

##ファイル属性で検索
drive_find(type = "spreadsheet")     ## Google Sheets!
drive_find(type = "csv")             ## MIME type = "text/csv"
drive_find(type = "application/pdf") ## MIME type = "application/pdf"

#データをダウンロードする
##例としてAAAAA.tifというgoogle driveにあるtifファイルをダウンロードしてみる
##Google drive上からほしいデータを検索&特定する
inputname <- drive_find(pattern = "AAAAA.tif") 
drive_download(file = inputname, type = "tif", path = here(inputname), overwrite = TRUE) #この例ではhereパッケージ(カレントディレクトリの管理に便利)を利用している.pathはDLする場所を指定

これでhere(inputname)にinputnameのデータがDLされる

データをアップロードする

##outnameはローカルデータ
drive_upload(media = outname, name = outname)

6
8
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
6
8