Выберите определенные c строк, которые будут добавлены в листы Google через массив - PullRequest
1 голос
/ 28 февраля 2020

По сути, у меня есть массив информации, которую я могу в настоящее время добавить в листы Google. Дело в том, что большая часть информации не нужна для моих нужд, поэтому я хотел найти способ просто добавить нужные мне столбцы.

all information appended to gsheets

На рисунке выше показано, как все выглядит,

По сути, идея состоит в том, чтобы сделать его похожим на следующий рисунок. How it should look like

так что в основном мне нужно только добавить столбцы 4,5,7

на данный момент, почему я это делаю!


     if (tozip.getContentType() == "application/zip"){  //for ZIP files
    var unZip = Utilities.unzip(tozip); //assigns the unzipped file to a new variable


    var table = Utilities.parseCsv(unZip[0].getDataAsString());// assigns the data to variable



  for (var i = 0; i < table.length; i++) {//loops trought the array an appends the data as it goes.

    sheet.appendRow(table[i]);   


    }   

Данные поступают из CSV-файла и выглядят следующим образом.

[[isApplication, applicationDate, isQualified, Funded_Date, isFunded, required_loan_amount, amountFunded], [1, 2020-02-03, 1, 2020 -02-03, 1, 1300.0000], [1, 2019-12-29, 1, 2019-12-30, 1, 3000.0000, 2000.0000], [1, 2020-01-27, 1, 2020-01- 28, 1, 800.0000], [1, 2020-01-08, 1, 2020-01-10, 1, 2500.0000, 2500.0000], [1, 2020-02-04, 1, 2020-02-10, 1 , 1400.0000], [1, 2020-01-21, 1, 2020-01-21, 1, 5000.0000, 2000.0000], [1, 2020-02-06, 1, 2020-02-06, 1, 1100.0000, 1400.0000], [1, 2020-02-01, 1, 2020-02-04, 1, 1500.0000, 601.0000], [1, 2020-02-11, 1, 2020-02-11, 1, 500.0000, 800.0000] ]

так что да, много грязных данных CSV. Я попытался добавить это к коду и нескольким вариантам, чтобы он мог выбрать внутренние данные

 for (var i = 0; i < table.length; i++) {//loops trought the array an appends the data as it goes.
var columns = [];  
    columns.push(3);
    columns.push(4);
    columns.push(6);   

 sheet.appendRow(table[i][columns]);   

    }   

, но это не работает, я супер новичок в этом типе вещей, так что я довольно уверен, что это неправильный способ попытаться выбрать нужную информацию из массива.

дайте мне знать, если мне нужно более подробно остановиться на этом, я не очень хорош в объяснении этого материала. Заранее благодарю за ответы, я очень ценю помощь в этом.

1 Ответ

3 голосов
/ 28 февраля 2020
  • Вы хотите извлечь столбцы «D», «E» и «G» из данных, полученных путем анализа данных CSV.
    • В вашем сценарии table из var table = Utilities.parseCsv(unZip[0].getDataAsString()); - это двумерные данные, показанные в вашем вопросе.
  • Вы хотите поместить полученные значения в электронную таблицу.
  • Вы хотите добиться этого с помощью Google Apps Script.

Если мое понимание верно, как насчет этого ответа? Пожалуйста, подумайте об этом как об одном из нескольких возможных ответов.

Точки модификации:

  • table из var table = Utilities.parseCsv(unZip[0].getDataAsString()); - это двумерный массив.
  • Когда for (var i = 0; i < table.length; i++) {} используется, каждая строка может быть получена с помощью table[i]. И значения из столбцов «D», «E» и «G» могут быть получены с помощью table[i][3], table[i][4], table[i][6].
    • В этой модификации var values = [] готовится, и каждый ряд ставится с values.push([table[i][3], table[i][4], table[i][6]]).
  • Когда метод appendRow() используется в oop, стоимость процесса становится высокой. Таким образом, в этом случае создается массив для l oop. И массив помещается в электронную таблицу, используя setValues(). Таким образом, стоимость может быть уменьшена.

Когда указанные выше точки отражаются в вашем сценарии, они становятся следующими:

Измененный сценарий:

var table = Utilities.parseCsv(unZip[0].getDataAsString());

// I modified below script.
var values = [];
for (var i = 0; i < table.length; i++) {
  values.push([table[i][3], table[i][4], table[i][6]]);
}
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1");
sheet.getRange(sheet.getLastRow() + 1, 1, values.length, values[0].length).setValues(values);
  • Над сценарием значения помещаются в «Лист1». Если вы хотите изменить это, пожалуйста, измените getSheetByName("Sheet1").
  • . В этом случае table - это var table = Utilities.parseCsv(unZip[0].getDataAsString()).

Примечание:

  • Когда var table = Utilities.parseCsv(unZip[0].getDataAsString()) не возвращает массив данных CSV, вышеупомянутый измененный скрипт не может быть использован. Пожалуйста, будьте осторожны.

Ссылки:

Если я неправильно понял ваш вопрос, и это не то направление, которое вы хотите, я приношу свои извинения.

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