使用来自 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 请求并添加路径参数datasetId
和projectId
。
HTTP 请求示例:
PUT https://www.googleapis.com/bigquery/v2/projects/projectId/datasets/datasetId
但是,使用Datasets: update
时请注意以下几点:
范围
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 的数据更新电子表格不起作用