我目前正在跑步
library(googlesheets4)
sheets_auth()
dat=read_sheet("https://docs.google.com/spreadsheets/d/1R9XuH9Wej-p6HdkFGV2IsHuCmA9w0s7M3-jzE3S-Qrs/edit#gid=950673024", sheet="Summary", range=cell_rows(1:777))
Run Code Online (Sandbox Code Playgroud)
并得到以下输出。
Suitable tokens found in the cache, associated with these emails:
* dcallow@umd.edu
* ddcc2442@gmail.com
The first will be used.
Using an auto-discovered, cached token.
To suppress this message, modify your code or options to clearly consent to the use of a cached token.
See gargle's "Non-interactive auth" vignette for more details:
https://gargle.r-lib.org/articles/non-interactive-auth.html
The googlesheets4 package is using a cached token for dcallow@umd.edu.
>
> dat=read_sheet("https://docs.google.com/spreadsheets/d/1R9XuH9Wej-p6HdkFGV2IsHuCmA9w0s7M3-jzE3S-Qrs/edit#gid=950673024", sheet="Summary", range=cell_rows(1:777))
Error: Client error: (403) PERMISSION_DENIED
* …Run Code Online (Sandbox Code Playgroud) 我试图弄清楚自动允许 googlesheet4 包选择我的预授权帐户来下载特定谷歌表格的方法是什么。
例如 - 我想每天运行以下一次 -
library(googlesheets4)
delta<-read_sheet(
"https://docs.google.com/spreadsheets/xyz...",
sheet = "XYZ Delta"
)
Run Code Online (Sandbox Code Playgroud)
控制台给出以下输出:
The googlesheets4 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 abort.
1. xyz@gmail.com
Run Code Online (Sandbox Code Playgroud)
从上面可以看出,我已经在上一步中授予了它访问该帐户的权限,以使用 google 工作表。但它仍然要求我手动输入“1”来选择此帐户。是否可以自动执行此操作,以便在自动安排此代码时无需手动输入“1”来运行此脚本?
如果您能指出我正确的方向,我将不胜感激!
我正在尝试使用此示例的更新版本通过 Shine 连接到私有 googlesheet,并将此应用程序部署在 Shinyapps.io 服务器上。由于应用程序使用指定的预先存在的 googlesheet,因此用户不需要对 google 帐户进行身份验证。
我已经按照这个例子(部分复制在这里),试图将令牌保存到我闪亮的应用程序:
# previous googlesheets package version:
shiny_token <- gs_auth() # authenticate w/ your desired Google identity here
saveRDS(shiny_token, "shiny_app_token.rds")
Run Code Online (Sandbox Code Playgroud)
但尝试将其更新为 googlesheets4,如下所示:
ss <- gs4_get("MY GOOGLE DOC URL") # do the authentication once, manually.
ss
gs4_has_token() # check that the token exists
# get token
ss_token <- gs4_token()
# save the token
save(ss_token, file = "APP PATH ... /data/tk.rdata")
Run Code Online (Sandbox Code Playgroud)
然后在应用程序中,我将此代码放在shinyApp()函数之外。
load("data/tk.rdata")
googlesheets4::gs4_auth(token = ss_token, use_oob = …Run Code Online (Sandbox Code Playgroud) 我知道还有一些其他类似的问题(例如,这里和这里),但我想我会再试一次,因为其他人还没有得到很多答案。
我有一个 Shiny 应用程序,允许用户通过该应用程序提供输入,但这些用户需要跳过身份验证步骤。在以前的版本中,googlesheets我公开了该表(对任何有链接的人)并避免了一些身份验证过程。在更新过程中,googlesheets4我在将更新的应用程序部署到shinyapps.io 时遇到了权限问题。这是我尝试过的内容以及得到的结果的总结。任何指示将不胜感激。
首先,根据本文中的建议,我创建了一个服务gargle帐户,下载了一个 JSON 服务帐户令牌(格式为“project-name-12345678abc1.json”),并将其(暂时)保存在父应用程序文件夹中的下假设它需要与应用程序包一起上传。然后我启用了 Google Sheets API。
我已将以下命令放在应用程序的前面,位于任何实质性内容之前:
gs4_deauth(),因为谷歌表格对任何有链接的人都是公开的,因此可能不需要令牌。
继这篇文章之后,gs4_auth(path = "project-name-12345678abc1.json"). 我还添加了scopes参数(如下),并且use_oob=TRUE.
credentials_service_account(scopes = "https://www.googleapis.com/auth/spreadsheets", path = "project-name-12345678abc1.json")。
credentials_app_default(path = "project-name-12345678abc1.json")
结果
大多数组合都会给我错误提示“无法获取 Google 凭据”,然后建议我查看漱口网站上的非交互式文章。唯一的例外是尝试 3,它提供了以下错误消息 - 奇怪的是,它很有希望:
警告:错误:客户端错误:(403) PERMISSION_DENIED
- 客户端没有足够的权限。发生这种情况的原因是 OAuth 令牌没有正确的范围、客户端没有权限或尚未为客户端项目启用 API。
关于我可能会缺少什么的任何想法?该应用程序在本地运行良好。
任何帮助表示赞赏。谢谢!
我是Shiny仪表板的初学者,我有一个困扰我很长时间的问题。
我的最终目标是将数据分配给名为“myData”的变量,但我为用户提供了从本地文件或在线文件(在我的例子中为 GoogleSheet)上传数据的选项。
下面是我的应用程序的简化版本。为了实现目标,我做了:
然而,问题是:
有朋友或专家可以帮助我解决这些问题吗?我真的非常感谢你的帮助!
library(shiny)
library(shinydashboard)
library(googlesheets4)
library(googledrive)
server = function(session, input, output)
{
# "input_option" is used to select whether input data from local or online
input_option = reactive(
input$select_upload
)
# Upload the data
myData = eventReactive(
input$select_upload,
if(input$select_upload == "local")
{
req(input$file_myData)
read.csv(
input$file_myData$datapath,
header = T,
stringsAsFactors = F,
sep = input$sep_file_myData)
}
else if(input_option() == "online")
{
as.data.frame(gs4_find("myData_sample") %>% range_read())
}
)
# display the myData data …Run Code Online (Sandbox Code Playgroud)