Обрабатывать определенные столбцы в листах в JSON - PullRequest
6 голосов
/ 25 октября 2019

У меня есть каталог списков, хранящихся в электронной таблице с разными столбцами, напоминающими разные точки данных, как показано ниже -

table

Я пытаюсь получить столбцы A,C & D в формате JSON.

Это код, который я использовал до сих пор, но он дает мне все данные с листа -

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

К сожалению, этоне предоставляет вывод в формате, в котором я нуждаюсь, который больше похож на JSON пары ключ-значение для:

  • Имя (столбец A)
  • PhoneNumber (столбецC)
  • Адрес (пол. D)

Может кто-нибудь сообщить мне, где я иду не так? Спасибо.

1 Ответ

5 голосов
/ 25 октября 2019

Попробуйте это -

//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]
  }
}

Очевидно, есть лучшие, более оптимизированные способы получения JSON из электронной таблицы, но это то, что я использовал и до сих пор меня не подводило.

Вы должны увидеть вывод, как показано ниже -

[
    {
        "Name":"A",
        "PhoneNumber":"C",
        "Address":"D"
    },
    {
        "Name":"E",
        "PhoneNumber":"G",
        "Address":"H"
    },
    {
        "Name":"I",
        "PhoneNumber":"K",
        "Address":"L"
    }
]

Надеюсь, это поможет, но, пожалуйста, не стесняйтесь сообщить об этом, если что-то еще потребуется.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...