Google Fusion Table to Google Spreadsheet - 按选定条件更新电子表格

时间:2014-09-30 08:41:29

标签: google-apps-script google-sheets google-fusion-tables google-spreadsheet-api

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

我想仅评估选定的列,例如:Date,FirstName,LastName,Department。搜索条件如下:

在电子表格上更新以下列“Date,FirstName,LastName,Department包含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);
  }
}

选择列并将数据从Fusion Table传输到电子表格没有问题。出现以下错误,当我只想显示带有上述选择标题的数据时(“Department包含HR”):

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

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

更新“Jens”!

此功能正常。我通过以下标准接收选定的数据。

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行的“变化结果”不正确,我不知道原因。


更新“Rod”!

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);
 }
}

发生相同的错误(请参阅更新ME) - >看来,第7行的“变化结果”是不正确的,我不知道为什么。


更新“Henrique”!

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行的“变化结果”是不正确的,我不知道为什么。

1 个答案:

答案 0 :(得分:0)

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

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

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