Google AppScript Jdbc 函数

Google AppScript Jdbc Function

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

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

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

};


我查看了文档,我知道可以做到,但我不知道如何做。我真的只想被推向正确的方向,在此先感谢您的任何建议

不确定我是否理解您的输入和输出。以及您的 'number' 如何变成 'name' 等。您如何知道一列有多少行?

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

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