Google apps script Googlesheet脚本仅在范围不为空或错误时复制范围
我试图从其他工作表(或同一工作表)复制某个范围,但仅当该范围不为空或出现类似(#N/A、#REF等)的错误消息时才复制它 例如:Google apps script Googlesheet脚本仅在范围不为空或错误时复制范围,google-apps-script,google-sheets,Google Apps Script,Google Sheets,我试图从其他工作表(或同一工作表)复制某个范围,但仅当该范围不为空或出现类似(#N/A、#REF等)的错误消息时才复制它 例如: 表1:包含原始数据表 第2页:包含从脚本复制的数据,但此处的数据仅在原始数据不为空或无错误时才被覆盖 注意:我在这里使用QUERY进行复制,但我确信这不是最好的复制方式,因为它不会在其他工作表中保留值,而只是为了取消嵌套。如果我理解正确,如果满足以下条件,您希望将范围复制到其他工作表: 源区域不包含任何有错误的单元格 源范围中的所有空行(如果有)都位于范围的末尾
- 表1:包含原始数据表
- 第2页:包含从脚本复制的数据,但此处的数据仅在原始数据不为空或无错误时才被覆盖
注意:我在这里使用QUERY进行复制,但我确信这不是最好的复制方式,因为它不会在其他工作表中保留值,而只是为了取消嵌套。如果我理解正确,如果满足以下条件,您希望将范围复制到其他工作表:
- 源区域不包含任何有错误的单元格
- 源范围中的所有空行(如果有)都位于范围的末尾(空行后面没有带值的行)
函数copyRange(){
var ss=SpreadsheetApp.getActive();
var sourceSheet=ss.getSheetByName(“source_sheet”);//源工作表名称
var targetSheet=ss.getSheetByName(“target_sheet”);//目标工作表名称
var A1notation=“C6:E23”;//源范围的A1表示法(如有必要,请更改)
var sourceRange=sourceSheet.getRange(a1表示法);
var sourceValues=sourceRange.getValues();
var errors=[“#REF!”,“#N/A!”,“#DIV/0!”,…];//错误数组(不完整)
对于(var i=0;i{
返回rowValues.every(cellValue=>{
返回cellValue==“”;
});
}).join().indexOf(“true,false”)!=-1;
var targetRange=targetSheet.getRange(“A1”);//要复制到的范围(如有必要,请更改)
if(!emptyRowInBetween)sourceRange.copyTo(targetRange);//将范围复制到指定的目标
}
更新:
如果只想复制值,而不想复制公式等,可以执行以下操作:
sourceRange.copyTo(targetRange、SpreadsheetApp.CopyPasteType.PASTE_值);
注:
- 你必须让它工作
getValue()
获取此单元格的值,(2)查看此值(以及您合理期望的值)中是否存在任何模式,以便可以检测和筛选这些值(而不是复制包含这些值的范围)。我希望我的解释有用。如果你对此有问题,我建议你为这个问题提出另一个问题。
function test() {
SpreadsheetApp.getActive().getSheetByName('sheet2').getRange('A2').setValue('=QUERY(sheet1!A2:E355, "SELECT A, B, C, D, E LIMIT 200",1)')
}