준비

if (!require(googledrive)) install.packages("googledrive")
drive_auth()
→ The googledrive package is requesting access to your
  Google account
  Select a pre-authorised account or enter '0' to obtain
  a new token
  Press Esc/Ctrl + C to cancel

1: hkboo@kookmin.ac.kr
1

파일 검색하기

drive_find(n_max = 10)

드라이브내 10개 폴더/파일명 가져오기 - drive_find()로 하면 전체 탐색을 하므로 매우 느림!

drive_find(type = "folder", n_max = 10)

드라이브내 10개 폴더명 가져오기 (type을 folder로 지정)

드라이브내 10개 csv 파일명 가져오기 (type을 folder로 지정)

Items so far: 
200 300 400 500 600 700 800 900 1000 1100 1200 1300 1400 1500 1600 1700 1800 1900 2000 2100 2200 2300 2400 2500 2600 2700 2800 2900 3000 3100 3200 3300 3400 3500 3600 3700 3800 3900 4000 4100 4200 4300 4400 4500 4600 4700 4800 4900 5000 5100 5200 5300 5400 5500 5600 5700 5800 5900 6000 6100 6200 6300 6400 6500 6600 6700 6800 6900 7000 7100 7200 7300 7400 7500 7600 7700 7800 7900 8000 8100 8200 8300 8400 8500 8600 8700 8800 8900 9000 9100 9200 9300 9400 9500 9600 9700 9800 9900 10000 10100 10200 10300 10400 10500 10600 10700 10800 10900 11000 11100 11200 11300 11400 11500 11600 11700 11800 11900 12000 12100 12200 12300 12400 12500 12600 12700 12800 12900 13000 13100 13200 13300 13400 13500 13600 13700 13800 13900 14000 14100 14200 14300 14400 14500 14600 14700 14800 14900 15000 15100 15200 15300 15400 15500 15600 15700 15800 15900 16000 16100 16200 16300 16400 16500 16600 16700 16800 16900 17000 17100 17200 17300 17400 17500 17600 17700 17800 17900 18000 18100 18200 18300 18400 18500 18600 18700 18800 18900 19000 19100 19200 19300 19400 19500 Error: Server error: (500) Internal Server Error
Internal Error
  *  domain: global
  *  reason: internalError
  * message: Internal Error
Run `rlang::last_error()` to see where the error occurred.

특정 패턴이 들어간 파일을 찾아보자 (정규식) * 그런데 엄청 느리다! -> 오류가 발생할 수도! -> 오류 발생..

drive_find(q = "name contains 'figures'")

쿼리로 검색하면 훨씬 빠르다!

drive_find(q = "name contains 'figures'",
           q = "modifiedTime > '2021-07-21T12:00:00'")

시간 조건(modifiedTime 등) 쿼리를 추가할 수 있다.

drive_ls("minter")

특정 폴더가 있는지 확인하고 있으면 폴더 내 파일명을 전체로 가져온다.

drive_ls(path = "minter", pattern = "config")

특정 폴더에 특정 패턴이 들어간 파일만 가져와보자.

파일 업로드하기

file_path <- "./webtoon_seeds.csv"
drive_upload(file_path)
Local file:
  * ./webtoon_seeds.csv
uploaded into Drive file:
  * webtoon_seeds.csv: 1g1XENlUWboEmasuklpj6uR8uxJxFZI3L
with MIME type:
  * text/csv

업로드한 후 드라이브 확인하면 생성날짜에 ’오후 5:51에 Tidyverse API Packages 사용’과 같이 표기된다.

파일 다운로드하기

save_path <- "./downloaded.csv"
downloaded_file <- drive_download("webtoon_seeds.csv", path = save_path, type = "csv")
Ignoring `type`. Only consulted for native Google file types.
File downloaded:
  * webtoon_seeds.csv
Saved locally as:
  * ./downloaded.csv

방금 업로드한 파일을 downloaded.csv로 다운 받아본다.

폴더 및 파일 생성

top_dir_path <- "created_20211127"
top_dir <- drive_mkdir(top_dir_path)
Created Drive file:
  * created_20211127: 1aep37EU-iYQT3l5i10S0ClHG121ijUud
with MIME type:
  * application/vnd.google-apps.folder
sub_dir <- drive_mkdir("test1", path = top_dir)
Created Drive file:
  * test1: 1ZDsx_6-c9BG0j5lEgm4wqrkm2P_oIyYK
with MIME type:
  * application/vnd.google-apps.folder
sub_dir2 <- drive_mkdir("test2", path = top_dir_path)
Created Drive file:
  * test2: 1O5Osr7mo56odnKsI7iLpFSUC7PpWWY8K
with MIME type:
  * application/vnd.google-apps.folder

drive_mkdir() 파라매터 overwrite가 TRUE이면 기존 폴더는 휴지통으로 이동된다.

create_file <- drive_create("test1.pdf", path = "created_20211127")
Created Drive file:
  * test1.pdf: 14wCCJZlCq0BEEK_afrrBRrOEHqGkrroc
with MIME type:
  * application/pdf

drive_create()를 하면 빈 파일이 생성되며 csv, pdf 등 파일 포맷 지정이 가능하다.

drive_browse(create_file)

drive_browse()을 하면 생성된 파일을 확인할 수 있다.

drive_ls(top_dir_path)

생성된 결과를 확인한다.

폴더 삭제하기

drive_rm(sub_dir)
Files deleted:
  * test1: 1ZDsx_6-c9BG0j5lEgm4wqrkm2P_oIyYK

drive_rm()을 통해 위 생성 폴더를 삭제해본다.

drive_ls(top_dir_path)

삭제 결과를 확인한다.

drive_rm(top_dir_path)
Files deleted:
  * created_20211127: 1aep37EU-iYQT3l5i10S0ClHG121ijUud

생성된 상위 폴더를 삭제한다.

참고

LS0tCnRpdGxlOiAiR29vZ2xlIERyaXZlIEFQSSDthYzsiqTtirgiCmF1dGhvcjogImhrYm9vQGtvb2ttaW4uYWMua3IiCmRhdGU6ICcyMDIxIDExIDI3ICcKb3V0cHV0OiBodG1sX25vdGVib29rCi0tLQoKIyMg7KSA67mECmBgYHtyIGdvb2dsZWRyaXZlfQppZiAoIXJlcXVpcmUoZ29vZ2xlZHJpdmUpKSBpbnN0YWxsLnBhY2thZ2VzKCJnb29nbGVkcml2ZSIpCmRyaXZlX2F1dGgoKQpgYGAKCiMjIO2MjOydvCDqsoDsg4ntlZjquLAKYGBge3J9CmRyaXZlX2ZpbmQobl9tYXggPSAxMCkKYGBgCuuTnOudvOydtOu4jOuCtCAxMOqwnCDtj7TrjZQv7YyM7J2866qFIOqwgOyguOyYpOq4sAotIGRyaXZlX2ZpbmQoKeuhnCDtlZjrqbQg7KCE7LK0IO2DkOyDieydhCDtlZjrr4DroZwg66ek7JqwIOuKkOumvCEKCgpgYGB7cn0KZHJpdmVfZmluZCh0eXBlID0gImZvbGRlciIsIG5fbWF4ID0gMTApCmBgYArrk5zrnbzsnbTruIzrgrQgMTDqsJwg7Y+0642U66qFIOqwgOyguOyYpOq4sCAodHlwZeydhCBmb2xkZXLroZwg7KeA7KCVKQoKCmBgYHtyIGVjaG89RkFMU0V9CmRyaXZlX2ZpbmQodHlwZSA9ICJjc3YiLCBuX21heD0xMCkKYGBgCuuTnOudvOydtOu4jOuCtCAxMOqwnCBjc3Yg7YyM7J2866qFIOqwgOyguOyYpOq4sCAodHlwZeydhCBmb2xkZXLroZwg7KeA7KCVKQoKYGBge3IgZWNobz1GQUxTRX0KZHJpdmVfZmluZChwYXR0ZXJuID0gImZpZ3VyZXMiKQpgYGAK7Yq57KCVIO2MqO2EtOydtCDrk6TslrTqsIQg7YyM7J287J2EIOywvuyVhOuztOyekCAo7KCV6rec7IudKQoqIOq3uOufsOuNsCDsl4Tssq0g64qQ66as64ukISAtPiDsmKTrpZjqsIAg67Cc7IOd7ZWgIOyImOuPhCEgLT4g7Jik66WYIOuwnOyDnS4uCgpgYGB7cn0KZHJpdmVfZmluZChxID0gIm5hbWUgY29udGFpbnMgJ2ZpZ3VyZXMnIikKYGBgCuy/vOumrOuhnCDqsoDsg4ntlZjrqbQg7Zuo7JSsIOu5oOultOuLpCEKCmBgYHtyfQpkcml2ZV9maW5kKHEgPSAibmFtZSBjb250YWlucyAnZmlndXJlcyciLAogICAgICAgICAgIHEgPSAibW9kaWZpZWRUaW1lID4gJzIwMjEtMDctMjFUMTI6MDA6MDAnIikKYGBgCuyLnOqwhCDsobDqsbQobW9kaWZpZWRUaW1lIOuTsSkg7L+866as66W8IOy2lOqwgO2VoCDsiJgg7J6I64ukLgoKYGBge3J9CmRyaXZlX2xzKCJtaW50ZXIiKQpgYGAK7Yq57KCVIO2PtOuNlOqwgCDsnojripTsp4Ag7ZmV7J247ZWY6rOgIOyeiOycvOuptCDtj7TrjZQg64K0IO2MjOydvOuqheydhCDsoITssrTroZwg6rCA7KC47Jio64ukLgoKYGBge3J9CmRyaXZlX2xzKHBhdGggPSAibWludGVyIiwgcGF0dGVybiA9ICJjb25maWciKQpgYGAK7Yq57KCVIO2PtOuNlOyXkCDtirnsoJUg7Yyo7YS07J20IOuTpOyWtOqwhCDtjIzsnbzrp4wg6rCA7KC47JmA67O07J6QLgoKIyMg7YyM7J28IOyXheuhnOuTnO2VmOq4sApgYGB7cn0KZmlsZV9wYXRoIDwtICIuL3dlYnRvb25fc2VlZHMuY3N2Igpkcml2ZV91cGxvYWQoZmlsZV9wYXRoKQpgYGAK7JeF66Gc65Oc7ZWcIO2bhCDrk5zrnbzsnbTruIwg7ZmV7J247ZWY66m0IOyDneyEseuCoOynnOyXkCAn7Jik7ZuEIDU6NTHsl5AgVGlkeXZlcnNlIEFQSSBQYWNrYWdlcyDsgqzsmqkn6rO8IOqwmeydtCDtkZzquLDrkJzri6QuCgojIyDtjIzsnbwg64uk7Jq066Gc65Oc7ZWY6riwCmBgYHtyfQpzYXZlX3BhdGggPC0gIi4vZG93bmxvYWRlZC5jc3YiCmRvd25sb2FkZWRfZmlsZSA8LSBkcml2ZV9kb3dubG9hZCgid2VidG9vbl9zZWVkcy5jc3YiLCBwYXRoID0gc2F2ZV9wYXRoLCB0eXBlID0gImNzdiIpCmBgYArrsKnquIgg7JeF66Gc65Oc7ZWcIO2MjOydvOydhCBkb3dubG9hZGVkLmNzduuhnCDri6TsmrQg67Cb7JWE67O464ukLgoKIyMg7Y+0642UIOuwjyDtjIzsnbwg7IOd7ISxCmBgYHtyfQp0b3BfZGlyX3BhdGggPC0gImNyZWF0ZWRfMjAyMTExMjciCnRvcF9kaXIgPC0gZHJpdmVfbWtkaXIodG9wX2Rpcl9wYXRoKQpzdWJfZGlyIDwtIGRyaXZlX21rZGlyKCJ0ZXN0MSIsIHBhdGggPSB0b3BfZGlyKQpzdWJfZGlyMiA8LSBkcml2ZV9ta2RpcigidGVzdDIiLCBwYXRoID0gdG9wX2Rpcl9wYXRoKQpgYGAKZHJpdmVfbWtkaXIoKSDtjIzrnbzrp6TthLAgb3ZlcndyaXRl6rCAIFRSVUXsnbTrqbQg6riw7KG0IO2PtOuNlOuKlCDtnLTsp4DthrXsnLzroZwg7J2064+Z65Cc64ukLgoKCmBgYHtyfQpjcmVhdGVfZmlsZSA8LSBkcml2ZV9jcmVhdGUoInRlc3QxLnBkZiIsIHBhdGggPSAiY3JlYXRlZF8yMDIxMTEyNyIpCmBgYApkcml2ZV9jcmVhdGUoKeulvCDtlZjrqbQg67mIIO2MjOydvOydtCDsg53shLHrkJjrqbAgY3N2LCBwZGYg65OxIO2MjOydvCDtj6zrp7cg7KeA7KCV7J20IOqwgOuKpe2VmOuLpC4KCmBgYHtyfQpkcml2ZV9icm93c2UoY3JlYXRlX2ZpbGUpCmBgYApkcml2ZV9icm93c2UoKeydhCDtlZjrqbQg7IOd7ISx65CcIO2MjOydvOydhCDtmZXsnbjtlaAg7IiYIOyeiOuLpC4KCmBgYHtyfQpkcml2ZV9scyh0b3BfZGlyX3BhdGgpCmBgYArsg53shLHrkJwg6rKw6rO866W8IO2ZleyduO2VnOuLpC4KCiMjIO2PtOuNlCDsgq3soJztlZjquLAKCmBgYHtyfQpkcml2ZV9ybShzdWJfZGlyKQpgYGAKZHJpdmVfcm0oKeydhCDthrXtlbQg7JyEIOyDneyEsSDtj7TrjZTrpbwg7IKt7KCc7ZW067O464ukLgoKYGBge3J9CmRyaXZlX2xzKHRvcF9kaXJfcGF0aCkKYGBgCuyCreygnCDqsrDqs7zrpbwg7ZmV7J247ZWc64ukLgoKYGBge3J9CmRyaXZlX3JtKHRvcF9kaXJfcGF0aCkKYGBgCuyDneyEseuQnCDsg4HsnIQg7Y+0642U66W8IOyCreygnO2VnOuLpC4KCiMjIOywuOqzoAoqIGh0dHBzOi8vZ29vZ2xlZHJpdmUudGlkeXZlcnNlLm9yZy8KKiBodHRwczovL3JwdWJzLmNvbS9FdmFuX0p1bmcvcmdvb2dsZWRyaXZl