Google Fusion Table to Google Spreadsheet - 按选定标准更新电子表格

Posted

技术标签:

【中文标题】Google Fusion Table to Google Spreadsheet - 按选定标准更新电子表格【英文标题】:Google Fusion Table to Google Spreadsheet - Update Spreadsheet by selected criteria 【发布时间】:2014-09-30 08:41:28 【问题描述】:

我是编码初学者,我正在运行一个脚本来使用来自 Google Fusion Table 的数据更新 Google 电子表格。 Fusion Table 的数据包含大约 100 个不同的列。

我只想评估选定的列,例如:日期、名字、姓氏、部门。搜索条件如下:

在电子表格上更新以下列“日期、名字、姓氏、部门,其中部门包含 HR”。

我正在使用以下脚本:

function runQuery() 
var sql = 'SELECT Date, FirstName, LastName, Department WHERE Department contains HR' + 'TableID';
var result = FusionTables.Query.sqlGet(sql, 
hdrs: false
);
if (result.rows) 
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var sheet = spreadsheet.getActiveSheet();

     sheet.getRange(2, 1, result.rows.length, result.columns.length)
    .setValues(result.rows);
  

选择Columns并将数据从Fusion Table传输到Spreadsheet是没有问题的。当我只想显示具有上述选择标准的数据(“部门包含 HR”)时,会发生以下错误:

-无效查询:“WHERE”附近的解析错误(第 1 行,位置 33)。 (Zeile 3, Datei "runQuery")-

如果有人可以帮助我,那就太好了。提前谢谢你。

詹斯

更新“詹斯”!

这个功能很好用。然后我会按照以下标准接收选定的数据。

var tableName = '1sJjfOJ4Q.....'

function runQuery() 

var sql = 'SELECT Date, FirstName, LastName, Department, EMail from ' + 'tableName';

var result = FusionTables.Query.sqlGet(sql, 
hdrs: false
);
if (result.rows) 
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var sheet = spreadsheet.getActiveSheet();


// Append the results.
  sheet.getRange(2, 1, result.rows.length, result.columns.length)
      .setValues(result.rows);
 

当我添加“where 子句”时出现错误:

var tableName = '1sJjfOJ4Q.....'    

function runQuery() 
var sql = 'SELECT Date, FirstName, LastName, Department, EMail from ' + 'tableName' + 'WHERE Department contains HR';

var result = FusionTables.Query.sqlGet(sql, 
hdrs: false
);
if (result.rows) 
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var sheet = spreadsheet.getActiveSheet();


// Append the results.
  sheet.getRange(2, 1, result.rows.length, result.columns.length)
      .setValues(result.rows);
 

错误如下所示: 无效查询:“部门”附近的解析错误(第 1 行,位置 101)。无效的表 id 1sJjfOJ4...-xLfYohPizswhere(第 7 行,文件“代码”)”

看来,第 7 行的“var 结果”不正确,我不知道为什么。


更新“棒”!

var tableName = '1sJjfOJ4Q.....'    

function runQuery() 
var sql = 'SELECT Date, FirstName, LastName, Department, EMail from ' + 'tableName' + "WHERE Department contains 'HR'";

var result = FusionTables.Query.sqlGet(sql, 
hdrs: false
);
if (result.rows) 
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var sheet = spreadsheet.getActiveSheet();


// Append the results.
  sheet.getRange(2, 1, result.rows.length, result.columns.length)
      .setValues(result.rows);
 

出现同样的错误(见更新我)--> 看来,第 7 行的“var 结果”不正确,我不知道为什么。


更新“恩里克”!

function runQuery() 
var sql = 'SELECT Date, FirstName, LastName, Department, EMail from 1sJjfOJ4Q..... WHERE Department contains HR';

var result = FusionTables.Query.sqlGet(sql, 
hdrs: false
);
if (result.rows) 
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var sheet = spreadsheet.getActiveSheet();


// Append the results.
  sheet.getRange(2, 1, result.rows.length, result.columns.length)
      .setValues(result.rows);
 

出现以下错误: 无效查询:“HR”附近的解析错误(第 1 行,位置 120)。 (第 7 行,文件“代码”) 看来,第 7 行的“var 结果”不正确,我不知道为什么。

【问题讨论】:

【参考方案1】:

您的选择需要FROMWHERE 之前。 tableIDWHERE 子句之间应该有一个空格。最后,字符串“HR”应该用引号括起来。试试这个:

sql = "SELECT Date, FirstName, LastName, Department FROM "+tableID+" WHERE Department contains 'HR'";

假设您在调用此函数之前设置了具有正确值的tableID 变量。

【讨论】:

嗨,恩里克。感谢您的回复。在你的情况下 (+TableID+) 我猜表 ID 不会被“激活”。我尝试了另一个版本,但她也出现错误:“var sql = 'SELECT Date, FirstName, LastName, Department FROM ' + '18IA-fm....._' + 'WHERE Department contains HR';”该错误被称为:“无效查询:'Department'(第 1 行,位置 101)附近的解析错误。无效的表 id 1sJjfOJ4 ....WHERE(Zeile 5,Datei“runQuery”)”。 --> 表ID有效。我正在使用这个 tableID 处理同一个电子表格。嗯...也许您还有其他解决方案.... BR Jens “contains”的参数必须用单引号括起来。最简单的方法是将 where 子句括在双引号中:“where Department contains 'HR'” @Jens 似乎您忘记在 tableID 和 WHERE 子句之间添加一个空格。如果您要对其进行硬编码(这似乎就是您正在做的事情,请删除引号和加号,例如... Department FROM 18Ia-fmbla WHERE etc... @Rod,请。请参阅上面的更新代码(更新“Rod”!)。发生错误。我猜,“var 结果”中有一个错误。我试图弄清楚,但我不知道问题出在哪里。你看到问题了吗? @Henrique 这是同一个问题,正如我对 Rod 提到的。请。请参阅“更新 Henrique!”多于。我根本找不到问题。也许你们中的一些人有另一个想法......提前谢谢......

以上是关于Google Fusion Table to Google Spreadsheet - 按选定标准更新电子表格的主要内容,如果未能解决你的问题,请参考以下文章

对 Fusion Table 进行 SQL 查询时出现 403 错误

Javascript v3 Fusion Table Layer - where子句中的ROWID

要遵循哪个 OAuth 流程? (Google Apps 脚本和 Google Fusion Tables API)

google fusion管道没有写入任何接收器组件

Google Cloud Data Fusion 将 Excel 提取到 Bigquery

Google Maps API v3和fusion图层:获取行数据