问题标签 [googlesheets4]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
111 浏览

r - 用于调度 R 脚本的 cronR 以错误的格式写入 .csv 列(日期)

我创建了一个脚本,它从两个 GitHub 存储库读取数据,重新格式化数据集,按行将它们绑定在一起,然后将所有内容写入一个新的 .csv 文件。然后,我通过cronR包的功能计划每小时运行一次该脚本。

这是我的代码:

当我手动运行我的脚本时,一切正常,生成的 .csv 也很好,但是如果您尝试通过 cronR 包安排此脚本的运行(从 RStudio IDE 单击Addins -> Schedule R scripts on Linux/Unix)保存的 .csv 仅与“日期”列不同。事实上,第一个数据集的日期在第一列,但是第二个数据集的日期(绑定到第一个到bind_rows())在数据集的末尾,并且标题有一个新的奇怪名称(你可以从这张图片中看到)。

你知道可能是什么问题吗?非常感谢!

PS:我在 2016 年末的 MacBook Pro 上工作,8 Gb 的 RAM,安装了 macOS Catalina。

0 投票
0 回答
281 浏览

r - 为什么 R 包 Googlesheets4 无法识别我的凭据...?

所以我可以弹出一个询问登录信息并为我生成身份验证代码的弹出窗口,但是一旦输入它就会被 R 拒绝,说它仍然无法获得我的 Google 凭据......任何帮助都非常非常非常感谢...我所有的报告都进入了 googlesheets,我无法弄清楚为什么这不再有效...

0 投票
1 回答
149 浏览

r - 尝试优化 R Shiny App 加载时间的速度——缓慢的 googlesheets4 pull

我目前正在开发一个 R Shiny 应用程序,该应用程序利用 googlesheets4 在应用程序启动时从 GoogleSheets 中提取一个大型数据集。将此数据集加载到我的应用程序需要大约 2 分钟,这会拖延我整个应用程序的加载时间。

我的应用程序中唯一的视觉对象是基于这个 GoogleSheets 数据,所以它非常依赖这个特定的数据集。一旦数据集被拉入我的应用程序,它就会被过滤,因此变得更小(85,000 行 ---> 1,000 行)。这个 GoogleSheet 数据每天都会更新,所以我没有机会预先下载一次并将其永久存储为 .csv。

我已经尝试过两种不同的修复方法,但都没有成功……好奇是否有人有任何想法。

  1. 运行一个单独的应用程序。我的第一个想法是完全创建一个单独的 Shiny 应用程序,其唯一目的是每天拉一次 GoogleSheets df。一旦它拉出它,它将进行必要的数据清理以将其降至约 1,000 行,然后将较小的 df 推送到不同的 GoogleSheet 链接。然后,我的带有视觉效果的原始应用程序将始终引用新的 GoogleSheet(加载时间会少得多)。

我在这里遇到的问题是我不知道如何使用 googlesheets4 编写新的 GoogleSheets 文档。如果有人知道如何做到这一点,将不胜感激。

  1. 暂时延迟 GoogleSheets 数据的加载,并让视觉首先填充。我的第二个想法是在启动时延迟拉入 GoogleSheets df 的代码,让我的视觉首先填充(使用旧数据),然后让 GoogleSheets 拉动发生。拉取完成后,让视觉对象重新填充更新的数据。

我想不出最好/正确的方法来实现这一点。我试着弄乱 sleep.sys() 和 futures/promises 但无法让事情正常工作。

好奇是否有人对我的两种不同方法有任何想法,或者是否有更好的方法我只是没有考虑......

谢谢!

0 投票
1 回答
285 浏览

r - 如何使用 R 删除我的 googlesheets 行

我正在使用该googlesheets4包来访问我的Googlesheets
我可以从名为Youtube的文件和名为Youtube_Links的工作表中检索数据,但我想删除一些行,例如所有列的第1618行。

我最近看到在githubsheets_delete()上添加了一个函数,但是当我 看到这个包的所有函数时,我在列表中看不到那个函数。lsf.str("package:googlesheets4")

您知道我需要采取哪些步骤才能使用它吗?

我尝试了以下但没有任何成功:sheets_delete(Youtube, sheet = "Youtube_Links", range = "16:18", shift = NULL)

0 投票
0 回答
304 浏览

r - Dockerfile 中的 R 包:找不到包 'tidyverse/googlesheets4'

我设法在我的本地 RStudio 会话上安装了以下软件包:

我现在正尝试将它直接安装在我服务器上的 RStudio 会话的 Dockerfile 中。为此,在该行下方:

我已经添加了:

但是当我启动docker-compose up -d命令时,我得到了这个错误:

package_find_repo(package,repos)中的错误:找不到包'tidyverse/googlesheets4'调用:... -> download_version_url -> package_find_repo 执行停止错误:服务'rstudio'未能构建:命令'/bin/sh - c R -e "devtools::install_version('tidyverse/googlesheets4')"' 返回非零代码:1

你知道可能是什么问题吗?非常感谢。

0 投票
3 回答
2374 浏览

r - 客户没有足够的权限

我目前正在跑步

并获得以下输出。

我不确定问题是否是它迫使我使用第一封电子邮件?是否可以更改为第二个令牌?但我也很困惑为什么不再要求我进入我的谷歌帐户来验证东西?

任何想法为什么会发生这种情况?我是 API 新手。

0 投票
1 回答
1058 浏览

r - 有没有办法在 R Shiny App 加载时自动验证对 GoogleSheets 的访问?Googlesheets4 身份验证问题

我目前正在使用一个 R Shiny 应用程序,它利用 googlesheets4 从 GoogleSheet 中读取数据。我认识到身份验证对于访问 GoogleSheets 很重要,因此我尝试使用我的 app.R 文件中的以下代码对应用进行身份验证(出于隐私考虑,删除了电子邮件和 api 密钥):

当我使用此代码在本地运行仪表板时,它首先加载一个网页,要求登录 Google 并验证 Tidyverse 的 API:Tidyverse API 的屏幕截图...。 在我登录后,该应用程序完美地在一个单独的窗口中打开。

但是,我不希望用户在使用我的仪表板发布后必须对任何内容进行身份验证。理想情况下,我希望 Shiny 代码中包含必要的信息,以允许应用程序自行验证对 GoogleSheet 的访问权限。

我对 googlesheets4 和一般的 API 非常陌生,因此非常感谢有关将正确凭据放入我的 app.R 文件的任何和所有指导。

谢谢!


更新...4.23.20

使用https://gargle.r-lib.org/articles/non-interactive-auth.html#provide-a-service-account-token-directly后

我几乎可以解决这个问题。最后一个障碍是在发布阶段,我在应用启动时收到此错误:

错误:.auth 没有找到 我现在拥有的代码:

0 投票
0 回答
92 浏览

r - 从谷歌驱动器导入工作表时 R tbl 和数据框中的子集错误

我在 R 中有一个数据集,我使用 googlesheets4 包从 googledrive 导入该数据集

这似乎正确导入。检查该类表明它是一个 tbl_df

但是,当我尝试对不同的列进行子集化时,会出现各种错误。

首先我尝试使用正常的子集命令,结果如下

接下来我尝试调用实际的列名,这导致了一个不同的错误(我仔细检查了,这些肯定是列的名称)。

然后我尝试将整个数据集转换为数据框,这很有效

但是,使用列名进行子集返回相同的错误

使用列号进行子集返回不同的错误

数据框发生了什么?我试图子集的所有变量都是数字的,尽管数据集中有非数字变量。我不确定错误是由于我如何导入数据,还是因为数据集包含不同类型的变量。我对 R 比较陌生,所以任何指导表示赞赏:)

0 投票
2 回答
322 浏览

r - 部署到 shinyapps.io 的应用程序上的 googlesheets 的多用户身份验证

我有一个交互式闪亮应用程序,它想要读取和写入用户自己的 Google Drive 帐户。它正在使用gs4_create,gs4_findrange_read来自包googlesheets4googledrive.

当在本地运行时,我会在第一次使用这些包时依次通过控制台收到这样的提示:

googledrive 软件包正在请求访问您的 Google 帐户。选择预授权账户或输入“0”以获取新令牌。按 Esc/Ctrl + C 中止

1:notmyemail@gmail.com

我可以选择我的 gmail 帐户或输入 0 以在浏览器中打开“选择一个帐户以继续使用 Tidyverse API 包”GUI。这两种方法都可以(OAuth)对用户进行身份验证,并且这些功能都可以正常工作。

当我将应用程序部署到 shinyapps.io 时,它会在首次使用这些功能时引发错误,甚至无需请求凭据:

值错误[3L]:无法获取 Google 凭据。您是否在非交互式会话中运行 googledrive?考虑:drive_deauth() 防止尝试获取凭据。Call drive_auth() 直接与所有必要的细节。阅读更多内容:https ://gargle.r-lib.org/articles/non-interactive-auth.html

显然,我不是在已部署的应用程序上寻找控制台请求,但我认为我需要的是让 Tidyverse API GUI 触发(我认为这是预期的行为)并使用户能够验证他们的帐户?

请注意,(i) 此应用程序是交互式的,(ii) 用户正在寻求访问他们自己的 Google Drive 上的私人文件,而不是公共或公共文件。出于这两个原因,我不能只提供一个令牌。

drive_auth_config说明我可以设置自己的 OAuth 应用程序进行身份验证的文档,但这有必要吗?

有任何想法吗?谢谢。

0 投票
0 回答
35 浏览

r - 对从 Google 表格/Google 调查下载的数据进行自动标记的方法有哪些?

检索使用 Google 电子表格收集的数据非常方便,但如果我想使用 R 包例如从中创建数据库,则名义类别(非数字数据)存在问题。我通常使用:

但是在将它们导入数据库后,类别顺序存在问题。如果调查中有所谓的李克特量表答案(考虑到某些特征的水平)的问题,那么我对分配给文本类别数据库中类别的数值感兴趣,在规模概念的顺序,即

  • 1 = 没有
  • 2 = 可能不是
  • 3 = 我不知道
  • 4 = 相当
  • 5 = 是

那些在数据库上工作过的人都知道,编号的自动导入和包含将取决于,例如,答案在数据库中出现的顺序——而不是它们在调查中的顺序。

所以问题出现了 -是否有一个库负责根据调查自动编码数据,或者是否有一些用于谷歌表单(问卷)的 API,我可以从中得出数据的顺序并进行调整?也许其他一些我没有想到的工具?当然,我假设我可以访问我的 Google 帐户上的问卷/表格和与之兼容的数据库。