【问题标题】:Google AppScript Jdbc FunctionGoogle Apps 脚本 Jdbc 函数
【发布时间】:2022-01-05 02:29:16
【问题描述】:

我在一个简单的 App Script 项目中有一个函数,它从 MySQL 表中读取数据。我一直在使用 Google 表格作为存储,但正在进行一些更新。我的 SQL 对我来说是新的。此处的代码有效,因为它基于 Google 文档中的代码示例。

我遇到的问题是,它以逗号分隔的单个列列表形式给出了答案:

number , email , date , number , email , date , ...etc

如果可以的话,但我更喜欢它作为一个对象,其中每一行的列都像这样分组在一起:

name email date , name email date , ...etc

我相信你可以像这样输出一个对象,但我每次尝试时都会遇到新的领域。


[

{
name: name
email: email
date: date
}
]

这是我正在使用的功能。

function readFromTable() {
  var conn = Jdbc.getConnection(dburl, user, userPwd);

  //var start = new Date();
  var stmt = conn.createStatement();
  stmt.setMaxRows(1000);
  var results = stmt.executeQuery("SELECT proj_num, user, date FROM rams_sign WHERE user = '"+ email +"'")
 

  var numCols = results.getMetaData().getColumnCount();
  
  var userRams = '';
  while (results.next()) {
    
    for (var col = 0; col < numCols; col++) {
      userRams += results.getString(col + 1) + ',';
    }
    Logger.log(userRams);
    
    
  }

  return userRams

};


我查看了文档,我知道可以做到,但我无法弄清楚如何做。我真的只想被推向正确的方向,提前感谢您的任何建议

【问题讨论】:

    标签: mysql google-apps-script jdbc


    【解决方案1】:

    不确定我是否理解您的输入和输出。以及你的“数字”如何变成“名字”等。你怎么知道一列有多少行?

    只是猜测。也许你想要这样的东西:

    var s = 'number , email , date , number , email , date';
    var rows = 3; // just a guess
    var arr = s.split(' , ');
    var result = [];
    
    for (var a = 0; a < arr.length; a += rows) {
    
      var object = {};
    
      for (var r = 0; r < rows; r++) {
        object[arr[r+a]] = arr[r+a];
      }
    
      result.push(object)
    }
    
    console.log(result);
    
    // Output:
    // [
    //   { number: 'number', email: 'email', date: 'date' },
    //   { number: 'number', email: 'email', date: 'date' }
    // ]

    它拆分输入字符串(你有一个字符串作为输入吗?)并将其重新打包到对象数组中。

    或者,大概应该是这样的:

    var s = 'number1 , email1 , date1 , number2 , email2 , date2';
    var rows = 3;
    var arr = s.split(' , ');
    var result = [];
    
    for (var a = 0; a < arr.length; a += rows) {
    
      var object = {};
    
      object.number = arr[a];
      object.email  = arr[a+1];
      object.date   = arr[a+2];
    
      result.push(object)
    }
    
    console.log(result);

    使用array.shift() 方法的第二种算法的短变体:

    var s = 'number1 , email1 , date1 , number2 , email2 , date2';
    var arr = s.split(' , ');
    var result = [];
    
    while (arr.length)
      result.push({number: arr.shift(), email: arr.shift(), date: arr.shift()})
    
    console.log(result);
    

    【讨论】:

    • 这很奏效。感谢您的帮助。
    • 请记住array.shift() 看起来很整洁,但它可能会慢一点,因为它每次都会更改数组。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-12-06
    • 1970-01-01
    • 2021-08-02
    • 2016-01-27
    • 1970-01-01
    • 2018-12-14
    • 1970-01-01
    相关资源
    最近更新 更多