![](/img/trans.png)
[英]How can I convert epoch time in seconds to human readable from API JSON response in Apps Script before sending the data to Google Sheets?
[英]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.