【问题标题】:Data Validation with MySQL data in Google Spreadsheets App Script在 Google 电子表格应用脚本中使用 MySQL 数据进行数据验证
【发布时间】:2014-11-12 06:46:44
【问题描述】:

在 Google 电子表格中,我有一个应用程序脚本,它从 Mysql 数据库(结果)中获取数据并将其插入到特定工作表上的 lastRow()+1 中。我想运行数据验证以确保结果中的第一项不等于 A 列中最后一个单元格的内容。

除了数据验证(它抓取数据并将其放在我想要的位置,它只是不进行数据检查)之外,脚本中的所有内容都有效。任何帮助/指导将不胜感激 - 谢谢!

可能相关:我希望 results[0] 返回格式为“YYYY-MM-DD”的日期,以匹配 lastRow() 单元格值中的内容。

这是我的代码:

function cleverlynamedfunction() {

// make the connection
var connection = Jdbc.getConnection("jdbc:mysql://[host]/[database]", "[user]", "[password]");

// perform the query
var SQLstatement = connection.createStatement();
var result = SQLstatement.executeQuery("[some query]");

// choose a range in sheet
var ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("data_dash");
var cell = ss.getRange("A".concat(ss.getLastRow()+1));

// validate the data doesn't already exist in the spreadsheet DOES NOT WORK YET
var test = ss.getRange("A".concat(ss.getLastRow()));
if (test.getValue() == result[0]) {
return; 
}


// loop through result object, setting cell values to database data
var row = 0;
while(result.next()) {
for(var i=0; i<43; i++) {     // 43 fields per record
   cell.offset(row, i).setValue(result.getString(i+1));
}
row++;
 }

// tidy up
result.close();
SQLstatement.close();
connection.close();

}

【问题讨论】:

    标签: mysql google-apps-script google-sheets google-spreadsheet-api


    【解决方案1】:

    您从单元格中获得的值是(我猜)一个日期,而您与之比较的值似乎是一个字符串,比较永远不会是真的。

    有很多方法可以解决这个问题;您可以将两个值都转换为日期,也可以将两者都转换为字符串。

    第二种解决方案可能更容易且不易遇到困难。

    所以你应该在你的代码中使用这样的东西:

      ...
      var testAsString = Utilities.formatDate(new Date(test.getValue()), Session.getScriptTimeZone(),'yyy-MM-dd');
      if (testAsString == result[0]) {
      return;
    }
    

    【讨论】:

    • 我原本以为是日期问题,但我刚刚运行测试并打印出 result[0] 的值,结果显示为未定义。这对我来说很奇怪,因为结果的值确实加载到了我的工作表中(只是没有任何验证)。结果[0]的引用不正确吗?以下是 MySQL 查询结果的样子: 2014-01-01, Something, Another, Thing 等 2014-01-01, Something2, Another, Thing 等 我想验证左上角的第一个值最后一行的 A 列中已经存在的内容。
    • 你试过我的代码了吗?你是如何打印出 result[0] 值的?
    • 嗨,Serge - 是的,我确实使用了代码,但结果是一样的。这导致我检查结果 [0] 的值。为了快速检查它,我添加了返回值 undefined 的 Browser.msgBox(result[0])。
    猜你喜欢
    • 2016-12-21
    • 1970-01-01
    • 2011-08-15
    • 1970-01-01
    • 1970-01-01
    • 2023-03-14
    • 1970-01-01
    • 2012-05-18
    • 1970-01-01
    相关资源
    最近更新 更多