我的脚本需要从一张纸中获取值并将它们放入另一张纸中。它正确地获取值。但是,当将值输出到另一个工作表时,仅输出第一个元素。我需要输出所有元素。这可以通过以下两种方式之一实现(我认为);在输出值时跳过/忽略数组的空元素或忽略源工作表中的空单元格。任何帮助表示赞赏。脚本如下:
更新代码:
function exportArds() {
var ards = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Newtownards");
var export = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Export");
var ardsLastRow = ards.getLastRow();
var exportLastRow = export.getLastRow();
var refValues = new Array(6);
var amountValues = new Array(6);
//get values for export
refValues = ards.getRange("B12:G12").getValues();
amountValues = ards.getRange("B13:G13").getValues();
for(var i = 2; i<=6; i++){
var a = refValues.join().split(',').filter(Boolean);
var b = amountValues.join().split(',').filter(Boolean);
//get values, if any, in export sheet (used to check where the empty cells are for input)
var checkAmount = export.getRange(i, 4).getValue().toString();
var checkDescription = export.getRange(i, 5).getValue().toString();
export.getRange(i, 4).setValue(b[i-2]);
export.getRange(i, 5).setValue(a[i-2]);
}//close for loop
Logger.log(a);
Logger.log(b);
}//close function
但是,当值被正确设置为下一个工作表的单元格时,如果数组中有 2 个值,则 undefined 将输出 4 次。有没有办法防止这种情况?
我找到了一个适用于这个问题的解决方案,我相信它可以更干净一点,所以请随时评论任何建议!代码如下:
function exportArds() {
var ards = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Newtownards");
var export = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Export");
//get values for export
var refValues = ards.getRange("B12:G12").getValues();
var amountValues = ards.getRange("B13:G13").getValues();
for(var i = 2; i<=6; i++){
var a = refValues.join().split(',').filter(Boolean);
var b = amountValues.join().split(',').filter(Boolean);
}//close for loop
var aLength = a.length;
var bLength = b.length;
for(i = 2; i<=aLength; i++){
export.getRange(i, 5).setValue(a[i-2]);
}
for(i = 2; i<=bLength; i++){
export.getRange(i, 4).setValue(b[i-2]);
}
}//close function
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句