我有一个代码,用于将行从一个工作表(公园)复制到谷歌工作表中的另一个工作表(报告)。它工作正常,但问题是,我在工作表“Parks”中有 335 行,并且我不希望工作表“Report”中包含所有这些行。我想在“公园”工作表上应用过滤器,这样它可能会在“公园”工作表中保留 14 行。我希望代码只复制这 14 行,而不是全部(不是全部 335 行),但现在代码正在复制所有行。 有谁可以帮忙修改一下代码吗? 这是代码:
function copyDataFromParksToReport() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var parksSheet = ss.getSheetByName('Parks');
var reportSheet = ss.getSheetByName('Report');
reportSheet.getRange('A2:M').clearContent();
var parksData = parksSheet.getRange('A4:Q').getValues();
var reportData = [];
parksData.forEach(function(row) {
var newRow = [];
newRow[0] = row[16]; // Column Q -> Column A
newRow[1] = row[0]; // Column A -> Column B
newRow[2] = row[4]; // Column E -> Column C
newRow[3] = row[3]; // Column D -> Column D
newRow[4] = row[1]; // Column B -> Column E
newRow[5] = row[5]; // Column F -> Column F
newRow[6] = row[8]; // Column I -> Column G
newRow[8] = row[10]; // Column K -> Column I
newRow[10] = row[9]; // Column J -> Column K
newRow[12] = row[12]; // Column M -> Column M
// Get File ID from Google Drive links
if (row[6].includes("drive.google.com")) {
newRow[7] = row[6].split("/")[5]; // Column G -> Column H
} else {
newRow[7] = '';
}
if (row[11].includes("drive.google.com")) {
newRow[11] = row[11].split("/")[5]; // Column L -> Column L
} else {
newRow[11] = '';
}
reportData.push(newRow);
});
reportSheet.getRange(2, 1, reportData.length, reportData[0].length).setValues(reportData);
}
我尝试过 getfilter 类,但没有成功。
在 Parks 工作表上应用过滤器后,它仅获取可见行。
对于跳过空行,我添加了一个条件来跳过完全空的行
(row.join("").trim() !== "")
。
来自:
var parksData = parksSheet.getRange('A4:Q').getValues();
致:
var parksData = parksSheet.getRange('A4:Q').getDisplayValues();
来自:
reportSheet.getRange(2, 1, reportData.length, reportData[0].length).setValues(reportData);
致:
if (reportData.length > 0) {
reportSheet.getRange(2, 1, reportData.length, reportData[0].length).setValues(reportData);
}
function copyFilteredDataFromParksToReport() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var parksSheet = ss.getSheetByName('Sheet1');
var reportSheet = ss.getSheetByName('Sheet2');
reportSheet.getRange('A2:M').clearContent();
var parksData = parksSheet.getRange('A4:Q').getDisplayValues();
var reportData = [];
parksData.forEach(function(row) {
if (row.join("").trim() !== "") {
var newRow = [];
newRow[0] = row[16]; // Column Q -> Column A
newRow[1] = row[0]; // Column A -> Column B
newRow[2] = row[4]; // Column E -> Column C
newRow[3] = row[3]; // Column D -> Column D
newRow[4] = row[1]; // Column B -> Column E
newRow[5] = row[5]; // Column F -> Column F
newRow[6] = row[8]; // Column I -> Column G
newRow[8] = row[10]; // Column K -> Column I
newRow[10] = row[9]; // Column J -> Column K
newRow[12] = row[12]; // Column M -> Column M
if (row[6].includes("drive.google.com")) {
newRow[7] = row[6].split("/")[5];
} else {
newRow[7] = '';
}
if (row[11].includes("drive.google.com")) {
newRow[11] = row[11].split("/")[5];
} else {
newRow[11] = '';
}
reportData.push(newRow);
}
});
if (reportData.length > 0) {
reportSheet.getRange(2, 1, reportData.length, reportData[0].length).setValues(reportData);
}
}
表1:
表2: