将工作表中的特定列处理为JSON

Vin*_*e G 6 google-sheets google-apps-script

我有一个存储在电子表格中的列表目录,其中的不同列类似于不同的数据点,如下所示-

表

我想要实现的是在JSON中获取列A,C和D。

到目前为止,这是我一直在使用的代码,但这为我提供了工作表中的所有数据点-

function myFunction() {
  var ss = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  var range = ss.getDataRange();
  var values = range.getValues();
  var json = JSON.stringify(values);
  Logger.log(json);
}
Run Code Online (Sandbox Code Playgroud)

不幸的是,它没有以我需要的格式提供输出,这更像是键值对的JSON,用于:

  • 名称(col A)
  • 电话号码(列C)
  • 地址(列D)

有人可以让我知道我要去哪里吗?谢谢。

Sou*_*ria 5

尝试这个 -

//function myFunction() {
//  var ss = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
//  var range = ss.getDataRange();
//  var values = range.getValues();
//  var json = JSON.stringify(values);
//  Logger.log(json);
//}

function myFunction() {
  var dataArray = [];
  var ss = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  var rangeData = ss.getDataRange();
  var lastColumn = rangeData.getLastColumn();
  var lastRow = rangeData.getLastRow();
  var range = ss.getRange(2,1, lastRow-1, lastColumn);
  var data = range.getValues();
  for (var i = 0; i < lastRow-1; i++) {
    var dataJSON = json(data[i]);
    dataArray.push(dataJSON);
  }
  Logger.log(JSON.stringify(dataArray));
  return dataArray;
}

function json(row) {
  return {
    "Name" : row[0],
    "PhoneNumber" : row[2],
    "Address" : row[3]
  }
}
Run Code Online (Sandbox Code Playgroud)

显然,有更好,更优化的方法可以从电子表格中获取JSON,但这是我一直在使用的,并且到目前为止从未使我失败。

您应该看到如下输出:

[
    {
        "Name":"A",
        "PhoneNumber":"C",
        "Address":"D"
    },
    {
        "Name":"E",
        "PhoneNumber":"G",
        "Address":"H"
    },
    {
        "Name":"I",
        "PhoneNumber":"K",
        "Address":"L"
    }
]
Run Code Online (Sandbox Code Playgroud)

希望这会有所帮助,但也请随时告知以防万一。