google-apps-script - 在 Appscript 中复制带有条件的值
问题描述
我在一个文件夹中有 6 个不同的电子表格,它们都有一个名为“3.reporting”的通用工作表我只想从列年份等于 2021 的每个电子表格中复制值。这是年份位置的屏幕截图 下面是我用来提取数据的代码,但它会提取所有内容,包括名为“1.master_courses”的电子表格的空白行这是一个示例文件夹,这是目标文件电子表格
function courseMaster() {
//1NNBpm9zfzvpMbIPlZHvGKUV3BgO
var folder = DriveApp.getFolderById("1NNBpm9zfzvpMbIPlZHvGKUV3BgO");
var filesIterator = folder.getFiles();
var file;
var fileType;
var ssID;
var combinedData = [];
var data;
while (filesIterator.hasNext()){
file = filesIterator.next();
fileType = file.getMimeType();
if(fileType === "application/vnd.google-apps.spreadsheet"){
ssID = file.getId();
data = getDataFromSpreadsheet (ssID);
data = data.map(function(r){ return r.concat([file.getName()]);});
combinedData = combinedData.concat(data);
}//if ends here
}//while ends here
var ws = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("1.master_courses");
ws.getRange("A2:AA").clearContent();
ws.getRange(2, 1, combinedData.length, combinedData[0].length).setValues(combinedData);
}
function getDataFromSpreadsheet (ssID){
var ss = SpreadsheetApp.openById(ssID);
var ws = ss.getSheetByName("3.reporting");
var data = ws.getRange("A2:Z" + ws.getLastRow()).getValues();
return data
}
///***Sheet_Names***///
function sheetnames() {
var out = new Array()
var sheets = SpreadsheetApp.getActiveSpreadsheet().getSheets();
for (var i=0 ; i<sheets.length ; i++) out.push( [ sheets[i].getName() ] )
return out
}
解决方案
在该行} // while ends here
粘贴该行之后:
combinedData = combinedData.filter(x => x[0] == "2021");
如果您需要添加条件,您可以这样做:
combinedData = combinedData.filter(x => (x[0] == "2021") && (x[1] != ""));
x[0]
是第一个单元格 (A),x[1]
是第二个单元格 (B),等等。您可以为单元格添加任何条件:&& (and)、|| (或)等。如果这些条件的结果为 True,则该行将留在表中(通过过滤器),如果结果为 False,则该行将被省略(未通过过滤器)。
推荐阅读
- android - FirebaseMLException:找不到翻译模型文件
- python - 对随机数进行采样直到它不存在于集合中的更优雅的方法是什么?
- swift - 按下 NavigationLink 时的 SwiftUI 操作
- spring-boot - 在 JUnit 的另一个方法中没有调用方法
- mule - 如果监视文件夹不存在,我如何运行一些代码?
- ionic-framework - 本地地理定位离子手表位置在后台工作,但在手机锁定时不工作
- doxygen - Doxygen:使 C++ 的高亮代码具有与 Visual Studio 相同的颜色
- xamarin.forms - 将 android 应用程序分发到 AzureDevops 管道上的 AppCenter 时的状态代码 405
- corda - Corda 节点使用 postgresql 和 schema 时结果集大于一行
- python - 尝试使用 python 连接到 Exchange 邮件帐户时出现错误“无法使用密钥创建缓存协议..”