arrays - 在 if 语句中查看数组的所有实例?
问题描述
我有大约 20 张不同的工作表,我编写了一些谷歌脚本来将所有数据合并到一个主工作表中。现在我希望能够排除某些工作表。我这样做的想法是将这些工作表的名称存储在一个变量中。到目前为止,这是我所拥有的,但我遇到了错误?有任何想法吗?
label 是我正在扫描每张工作表的列的名称,masterSheetName 是我存储数据的工作表。
if (sheetName !== masterSheetName && sheetName !== skippedsheets)
线路是我遇到问题的线路。它不会通过所有跳过工作表的实例。
有没有办法用 for each 循环来做到这一点?
function getColVals(label, masterSheetName) {
var sheets = SpreadsheetApp.getActiveSpreadsheet().getSheets();
var colValues = []
for ([i,sheet] in sheets) {
var sheetName = sheet.getSheetName();
var skippedsheets = ["HHS 1","HHS 2"];
Logger.log(skippedsheets);
Logger.log(skippedsheets[0]);
if (sheetName !== masterSheetName && sheetName !== skippedsheets) {
var colValues2 = getColValues(label,sheetName);
colValues = colValues.concat(colValues2);
}
}
return colValues;
}
谢谢你,杰罗姆
解决方案
我发现有人编写并共享了这个名为 inArray 的函数,它运行良好。
function getColVals(label, masterSheetName) {
var sheets = SpreadsheetApp.getActiveSpreadsheet().getSheets();
var colValues = []
for ([i,sheet] in sheets) {
var sheetName = sheet.getSheetName();
var skippedsheets = ["template","intro","games"];
// Logger.log(skippedsheets);
// Logger.log(skippedsheets[0]);
if (sheetName !== masterSheetName && !(skippedsheets.inArray(sheetName))) {
var colValues2 = getColValues(label,sheetName);
colValues = colValues.concat(colValues2);
Logger.log(sheetName);
}
}
return colValues;
}
/*
* @function
* @name Object.prototype.inArray
* @description Extend Object prototype within inArray function
*
* @param {mix} needle - Search-able needle
* @param {bool} searchInKey - Search needle in keys?
*
*/
Object.defineProperty(Object.prototype, 'inArray',{
value: function(needle, searchInKey){
var object = this;
if( Object.prototype.toString.call(needle) === '[object Object]' ||
Object.prototype.toString.call(needle) === '[object Array]'){
needle = JSON.stringify(needle);
}
return Object.keys(object).some(function(key){
var value = object[key];
if( Object.prototype.toString.call(value) === '[object Object]' ||
Object.prototype.toString.call(value) === '[object Array]'){
value = JSON.stringify(value);
}
if(searchInKey){
if(value === needle || key === needle){
return true;
}
}else{
if(value === needle){
return true;
}
}
});
},
writable: true,
configurable: true,
enumerable: false
});
推荐阅读
- python - 如何向 Slack 发送通知?(NoneType 对象不可下标)
- google-cloud-platform - Google Cloud Scheduler 触发器数据流模板批处理作业因“INVALID ARGUMENT”而失败
- html - 像块级元素一样居中内联元素
- php - 使用 FrameworkExtraBundle 在 Symfony 3.4 应用程序中获取实体时验证 URL 参数
- angular - Angular 8,我如何检测路线是正常加载还是从后退按钮加载?
- sql - 在 postgresql 查询中将变量放在 json_extract_path_text 中
- django - 如何使用 django QuerySet API 根据条件审查特定字段
- php - 如何比较两个数组之间的三个值?【快捷方式】
- sql - 使用 Oracle SQL 函数替换多个特殊字符
- python - Python:函数式代码速度比纯代码速度更快。为什么?