簡體   English   中英

如何在 Apps 腳本(Google 表格)中過濾從 UrlFetchApp 檢索到的數據

[英]How can I filter the data retrieved from UrlFetchApp in Apps Script (Google sheets)

我有大量來自在線存儲的 csv 文件的數據。 我不想在工作表中添加所有數據並在那里過濾,而是想在將數據添加到工作表之前進行過濾。 在劇本中。

選項1:只保留包含“X”、“Y”或“Z”的行選項2:只保留類別(列)為“X”、“Y”或“Z”的行

我的代碼:

const csvUrl_6 = 'https://pf.tradetracker.net/?aid=428944&encoding=utf-8&type=csv&fid=819281&categoryType=2&additionalType=2&csvDelimiter=%3B&csvEnclosure=%22&filter_extended=1';
const delimiter_6 = ';';
const googleSheetId_6 = '1qbLcVMw6xOElVWoVDRksRZ_crVn_8d3uSsjlBhjlQm0';
const targetSheet_6 = 'Test';

function myFunction() {

  let response = UrlFetchApp.fetch(csvUrl_6);
  let data = response.getContentText();

  let pattern = new RegExp(delimiter_6 + '(?=(?:(?:[^"]*"){2})*[^"]*$)');
  let rows = data.split(/\r?\n/);
  rows = rows.map((row) =>
    row.split(pattern).map((cell) => cell.replace(/^"(.*)"$/, '$1'))
  );
  if (!rows || !rows.length || rows.length < 1 || !Array.isArray(rows)) {
    throw new Error('Something went wrong!');
  }

  let endingColumn = columnToLetter(rows[0].length);
  let range = `${targetSheet_6}!A1:${endingColumn}${rows.length}`;
  let valueRange = Sheets.newValueRange();
  valueRange.values = rows;
  Sheets.Spreadsheets.Values.clear({}, googleSheetId_6, `${targetSheet_6}!A:ZZ`);
  Sheets.Spreadsheets.Values.update(valueRange, googleSheetId_6, range, {
    valueInputOption: 'USER_ENTERED',
  });

選項1

嘗試換行:

valueRange.values = rows;

和:

let word = 'Bed & Toebehoren'; // the word you want to filter by
valueRange.values = [rows[0], ...rows.filter(x => x.join('\t').indexOf(word) > -1)];

它將只保留包含給定word的行。

選項 2

將同一行更改為:

var col = 3; // price column
var value = 27;
valueRange.values = [rows[0], ...rows.filter(x => x[col] == value)];

它將僅保留第 4 列(價格)中的值等於 27 的行。

選項 2+

您可以通過這種方式添加更多條件:

const conditions = x => 
  x[3] == 27 ||
  x[3] == 30 ||
  x[3] == 180;

valueRange.values = [rows[0], ...rows.filter(x => conditions(x))];

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM