javascript - 如果在 sheet2 的范围内发现 sheet1 上的值不起作用,则中断
问题描述
基本上,用户将在工作表 NovoItem 上输入新项目的数据。当按下保存按钮(待添加)时,代码应该在 sheet2 (ArquivoItens) 上检查项目是否已经存在。如果是这样,那么它应该打破。如果在 sheet2 (ArquivoItens) 上找到值,则代码不会中断:
function copyrange() {
var sourceSheet = 'Novo Item';
var destinationSheet = 'ArquivoItens';
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName(sourceSheet);
var ActiveUser = Session.getActiveUser();
//it add current user and a timestamp to the last 2 columns on sheet1.
var val = sheet.getRange("Q12:Q")
.getValues();
for (var i = 0; i < val.length; i++) {
if (val[i] > 0) {
sheet.getRange(12, 34, i + 1, 1)
.setValue(new Date());
sheet.getRange(12, 35, i + 1, 1)
.setValue(ActiveUser)
}
}
var LastRowSource = sheet.getLastRow();
var LastColumnSource = sheet.getLastColumn();
var values = sheet.getRange(11,1,LastRowSource,LastColumnSource).getValues();
var csh = ss.getSheetByName(destinationSheet);
var data = [];
for (var i = 1; i < values.length; i++) {
if ( values[i][0] != '') {
data.push(values[i]);
//sheet.deleteRow(i+1)
}
}
var dataNovoItem = sheet.getRange("B12:B").getValues(); // gets data (item number) in the sheet where data is input
var dataArquivoItens = csh.getRange("B2:B").getValues(); //gets the item number on the datawarehouse sheet
for(var n=1; n < dataNovoItem.length ; n++){
for(var j=1; j< dataArquivoItens.length ; j++){
if (dataNovoItem[n] != 0 && dataArquivoItens[j] != 0) {
if(dataNovoItem[n] == dataArquivoItens[j]) {
break;
}
}
}
}
Logger.log("Novo Item" + dataNovoItem);
Logger.log("ArquivoItens" + dataArquivoItens);
//Copy data array to destination sheet
csh.getRange(csh.getLastRow()+1,1,data.length,data[0].length).setValues(data);
}
任何帮助都是值得的。
解决方案
您没有使用迭代器来访问您正在迭代的索引。
它应该是
for(var n=1; n < dataNovoItem.length ; n++){
for(var j=1; j< dataArquivoItens.length ; j++){
if (dataNovoItem[n] != 0 && dataArquivoItens[j] != 0) { // this is where I try to eliminate blank rows in both ranges. I've tried != '', but it gets me the same result on the print below.
if(dataNovoItem[n] == dataArquivoItens[j]) {
break; //not working
}
}
}
}
Logger.log("Novo Item" + dataNovoItem);
Logger.log("ArquivoItens" + dataArquivoItens);
推荐阅读
- database - 如何在 Flutter 中创建异步代码?
- python - “Simple_Imputer”对象在 Colab 上没有属性“target_variable”
- html - 图像上的“热点”又名图标
- c++ - 在 C++ 中获取数组中数字频率的最快方法是什么?
- powershell - 阅读目录 + 使用 PowerShell 创建快捷方式
- python - 通过使用分隔符在 Dataframe pandas 中展平行来获取地址列表
- kubernetes - aks 集群创建上的 pod 身份
- .net-core - Cloud Foundry 中的实例 id 不是 guid?
- typescript - 有没有办法在打字稿的类型级别上将两个数字相加?
- python - 导入 Pandas 和 Numpy?