使用来自 bigquery 的数据自动更新 google 电子表格

Posted

技术标签:

【中文标题】使用来自 bigquery 的数据自动更新 google 电子表格【英文标题】:Automatically updating google spreadsheet with data from bigquery 【发布时间】:2016-06-07 23:21:34 【问题描述】:

按照说明 here 并将 Google 电子表格与 bigQuery 集成。我的查询提取过去一小时的数据,因此保持电子表格更新很重要。

有没有办法让工作表自动运行脚本并在刷新页面时更新数据?现在,我需要点击几下才能完成。

【问题讨论】:

刷新页面会触发“onOpen()”简单触发器,或已安装的“on open”触发器。因此,您需要一个“On Open”触发器,无论是简单的还是已安装的。 Apps Script Documentation - Triggers 谢谢。我试过了,但是如果我刷新页面,就会出现身份验证错误。但如果我按照手动步骤操作,数据就会刷新。 【参考方案1】:

除了@Sandy Good 的回答。

您需要使用onOpen(e),它在用户打开具有编辑权限的电子表格、文档或表单时运行。

function onOpen() 
// Add a custom menu to the spreadsheet.
SpreadsheetApp.getUi() // Or DocumentApp or FormApp.
.createMenu('Custom Menu')
.addItem('First item', 'menuItem1')
.addToUi();

您收到授权错误,因为脚本需要授权。 Apps 脚本需要用户授权才能访问数据。

如果脚本使用可以访问私有数据的服务,您将看到授权对话框之一。

您可以按照以下步骤撤销脚本访问权限:

访问您的 Google 帐户的权限页面。 (以后要导航到此页面,请访问 Google.com,然后单击屏幕右上角的帐户图片。接下来,单击帐户,然后单击安全,然后在帐户权限部分中查看全部。)

点击要撤销授权的脚本名称,然后点击右侧的Revoke access。

有关授权的更多信息,请关注 Google 官方文档:https://developers.google.com/apps-script/add-ons/lifecycle

【讨论】:

【参考方案2】:

由于 BigQuery 已集成到 Google 电子表格中, 以下是您必须对脚本执行的操作:

1. 使用Datasets: update 发送HTTP 请求并添加路径参数datasetIdprojectId

HTTP 请求示例:

PUT https://www.googleapis.com/bigquery/v2/projects/projectId/datasets/datasetId

但是,使用Datasets: update时请注意以下几点:

它需要如Authenticating requests to the Google BigQuery API 中所述的授权 指定的访问列表完全覆盖现有的访问列表。如果您指定一个空的访问权限列表,您将撤消除您自己以外的所有人的访问权限 此请求需要至少具有以下范围之一的授权:

范围

https://www.googleapis.com/auth/bigquery

https://www.googleapis.com/auth/cloud-platform

2.要自动更新您的数据,您可以在脚本内部设置一个Trigger 函数,该函数根据您的偏好使用这些保留的函数名称执行:

onOpen(e) 在用户打开他或她有权编辑的电子表格、文档或表单时运行。 onEdit(e) 在用户更改电子表格中的值时运行。 onInstall(e) 在用户安装插件时运行。 doGet(e) 在用户访问 Web 应用或程序向 Web 应用发送 HTTP GET 请求时运行。 当程序向 Web 应用发送 HTTP POST 请求时,doPost(e) 运行。

同样,您还应该注意,由于简单的触发器会自动触发,因此它们会受到一些限制,您可以在文档中了解这些限制。

【讨论】:

以上是关于使用来自 bigquery 的数据自动更新 google 电子表格的主要内容,如果未能解决你的问题,请参考以下文章

使用来自 Google BigQuery 的数据更新电子表格不起作用

bigquery 自动更新表

BigQuery 中的自动数据集?

检查 Google BigQuery 是不是使用 GCS 存储桶或任何其他存储

如何将数据从 Redshift 迁移到 BigQuery

Python:如何使用 pandas 数据框更新(覆盖)Google BigQuery 表