Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R Googlesheets配额限制问题-可能无法使用API密钥_R_Googlesheets4_Gargle - Fatal编程技术网

R Googlesheets配额限制问题-可能无法使用API密钥

R Googlesheets配额限制问题-可能无法使用API密钥,r,googlesheets4,gargle,R,Googlesheets4,Gargle,我们目前正在使用google sheets进行一个关于的研究项目 Google Sheets的使用是为了方便,但我们经常遇到配额限制问题——尽管我们拥有的用户数量应该远远低于Google允许的数量 我试图通过建立一个新的谷歌账户并创建一张可以阅读的表格来创建一个有点重复性的例子 我尝试的第一件事(没有对google帐户进行任何更改)是: 但这也没有让我超过33岁。我还查看了谷歌控制台,但也看不到任何流量——所以不确定我的API密钥是否被实际使用了 我认为这是因为我无法以预期的方式实际使用API

我们目前正在使用google sheets进行一个关于的研究项目

Google Sheets的使用是为了方便,但我们经常遇到配额限制问题——尽管我们拥有的用户数量应该远远低于Google允许的数量

我试图通过建立一个新的谷歌账户并创建一张可以阅读的表格来创建一个有点重复性的例子

我尝试的第一件事(没有对google帐户进行任何更改)是:

但这也没有让我超过33岁。我还查看了谷歌控制台,但也看不到任何流量——所以不确定我的API密钥是否被实际使用了


我认为这是因为我无法以预期的方式实际使用API。如果您能帮助设置/增加配额,我们将不胜感激。如果这有帮助的话,我很乐意访问测试帐户-只需给我写一条消息。

谷歌说这是一项安全措施。尝试通过添加他们的电子邮件来与一些人分享,我想我基本上明白了这一点,这确实是我未能正确使用API的原因

我的方法失败的原因

当您使用googlesheets4及其任何现成功能时,系统会要求您授权tidyverse API OAuth应用程序(您使用Google凭据登录,并授予OAuth应用程序访问权限)。这意味着您可以通过tidyverse OAuth应用程序发出所有请求,世界上使用此功能的所有其他用户也是如此。这是非常好的,因为它是开箱即用的,但是如果其他人同时使用这个包,它就会受到限制。与其他人分享这一配额意味着我不可预测地遇到了限制

如何更改设置以使其正常工作

有几件事有助于缓解/解决这个问题

  • 使用googlesheets4的devtools版本(
    devtools::install_github(“tidyverse/googlesheets4”)
    。googlesheets4的开发版本反过来依赖于
    gargle
    的开发版本,这是一个管理google身份验证的包。
    gargle
    的开发版本具有重试功能,如果请求失败,会自动重试。这应该可以解决大多数问题

  • 获取您自己的OAuth应用程序/谷歌服务帐户。 这允许您自己管理身份验证过程。因此,您不必与世界各地的其他用户共享配额。 要设置您自己的OAuth应用程序/谷歌服务帐户,您可以执行以下操作(我在这里重点介绍谷歌服务帐户,因为这在实践中要容易得多)

    • 登录。系统将要求您创建一个项目。您可以在左侧“谷歌云平台”旁边看到您的项目
    • 在搜索栏中键入“API和服务”,按“启用API和服务”并搜索工作表。启用此API
    • 返回搜索栏并键入“凭据”
    • 按“创建凭据”并选择“服务帐户”。服务帐户为您提供对API的编程访问。为其提供名称和说明。您应该能够跳过可选部分。创建服务帐户并返回凭据概述。您可能需要刷新页面或等待一分钟
    • 单击您的服务帐户(它看起来像一个非常神秘的电子邮件地址)并转到“密钥”选项卡
    • 单击“添加密钥”并创建一个新密钥。作为密钥类型,选择JSON
    • 下载该密钥并将其存储在安全的地方。这应该被视为密码和用户名的组合
    • 现在,要将您的密钥实际用于
      googlesheets4
      ,您可以运行`gs4\u auth(path=“path to your service account.JSON”)
    • 为了能够访问您的google工作表,您需要授予您的服务帐户权限。转到您的google工作表,按share(就像您与其他用户共享它一样),然后键入这封神秘的服务帐户电子邮件(它应该看起来像“1234@something.iam.gserviceaccount.com"。现在一切都可以正常工作,无需登录任何位置。如果您以前尝试过其他方法,我建议重新启动R会话
    • 利润
    现在,您还应该能够在google控制台仪表板中跟踪API请求


    请注意,每个用户每分钟仍有60个请求的限制,因此您没有收到完整的300个请求,但也许可以创建多个服务帐户并平衡这些帐户之间的负载。但不让其他人的请求干扰您的请求是一个很大的改进!

    只是一些问题@Nikos Bosse,有多少行e您的数据?是一张表还是多张表?1.请使用此参考:2.您是在localhost上运行应用程序还是在实际的控制台云面板上运行应用程序?当请求来自localhost时,可能有一些限制?@Nikos BosseAs在回答中写道,确实是我无法正确使用API。我想现在我正在使用控制台云面板因为我正在使用服务帐户,并且正在通过Shinny访问该帐户。@Manu sheet目前大约有100行,但它正在增长
    library(googledrive)
    library(googlesheets4)
    
    # Google sheets authentification -----------------------------------------------
    options(gargle_oauth_cache = ".secrets")
    drive_auth(cache = ".secrets", email = "iamatestotest@gmail.com")
    gs4_auth(token = drive_token())
    
    sheet_id <- "1Z2O5Mce_haceWfduLenJQP-hddXF9biY_4Ydob_psyQ"
    
    n_tries <- 50
    
    for (i in 1:n_tries) {
      data <- read_sheet(ss = sheet_id)
      Sys.sleep(0.5)
      print(i)
    }
    
    drive_deauth()
    drive_auth_configure(api_key = "thisismyapikey")
    gs4_auth(token = drive_api_key())