我在互联网上查看如何在google电子表格中导入bigquery数据。 我找到了这个appscript示例,但它没有工作API不在同一级别,我也没有找到如何在appscript中使用API2或API @ beta1进行查询。
function runQuery() {
var ss = SpreadsheetApp.getActive();
var range = ss.getRangeByName('query');
var query = range.getCell(1, 1).getValue();
//var results = bigquery.query(query);
var header = ss.getRangeByName('header');
header.clearContent();
var output = ss.getRangeByName('output');
output.clearContent();
for (var i = 0; i < results.fields.length; i++) {
var field = results.fields[i];
header.getCell(1, 1 + i).setValue(field.id);
}
for (var i = 0; i < results.rows.length; i++) {
var row = results.rows[i].f;
for (var j = 0; j < row.length; ++j) {
output.getCell(1 + i, 1 + j).setValue(row[j].v);
}
}
}
提前感谢您的想法,
GQ
答案 0 :(得分:9)
更新:我们刚刚添加了一个新的BigQuery + Apps脚本教程,可以引导您完成此问题的答案: https://developers.google.com/apps-script/articles/bigquery_tutorial
@GQuery:我们最近更新了AppsScript以访问最新的BigQuery API版本(v2)。这是一个简单的入门示例,将在AppScript日志中显示结果。我们正在努力更新AppScript / BigQuery文档。
function runQuery() {
var projectId = 'YOUR PROJECT';
var sql = 'select word, word_count from publicdata:samples.shakespeare limit 100';
var queryResults;
// Run the query
try {
queryResults = BigQuery.Jobs.query(projectId, sql);
}
catch (err) {
Logger.log(err);
return;
}
// Loop until successful job completion
while (queryResults.getJobComplete() == false) {
try {
queryResults = BigQuery.Jobs.getQueryResults(projectId, queryResults.getJobReference().getJobId());
}
catch (err) {
Logger.log(err);
return;
}
}
var tableRows = queryResults.getRows();
for (var i = 0; i < tableRows.length; i++) {
var rowString = '';
var cols = tableRows[i].getF();
for (var j = 0; j < cols.length; j++) {
rowString += cols[j].getV() + '\t';
}
Logger.log(rowString);
答案 1 :(得分:0)
我没有对hurricaneditka16发表评论的声誉。因此,我发布了这个答案: 这一行
queryResults = BigQuery.Jobs.query(projectId, sql);
应替换为
.query(
resource,
projectId);
资源是您之前使用的sql的轻微转换。尝试这种转换,它会起作用。
function getResource(sql) {
var resource = '{"query": "sql"}'
resource = resource.replace('sql', sql);
return resource
}