首页 文章

从一张纸到另一张纸的基于条件的复制单元的脚本

提问于
浏览
1

我想编写一个简单的脚本来复制"source"电子表格 C5:K5 中的单元格,并根据 B5 中的值将其粘贴到适当的行中的"target"表格中 . 我无法找到确切的脚本代码 . 接下来,我附上了示例电子表格,有助于描述我在寻找的内容:

https://docs.google.com/spreadsheets/d/1PoeIbmO1VTYYR9jViw6rHV0Pnzg357AkZJIA28My2LA/edit?usp=sharing

我尝试过以下脚本,它运行正常,但它没有在适当的行中粘贴复制的值 . 例如,如果我在共享电子表格“sample”中运行脚本,则会将值粘贴到行号 - 101中 . 但应将其粘贴到行号 - 55中 .

function create() {
    var sheet1 = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('sheet1');
    var sheet2 = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('sheet2');
    var dest;

    var range1 = sheet1.getRange(5,2);
    var tune = range1.getValue();
    Logger.log('tune is ' + tune);

    if (tune != null){ 
        var copyrange = sheet1.getRange("C5:J5");
    }

    var compare1 = sheet2.getRange("B5:B105");
    var compare = sheet2.getRange("B5:B105").getValues();
    Logger.log('sheet2 values are ' + compare); 
    var i;
    var dest=[];


    for(var j=1; j< compare.length; j++) {

        var find = compare[j];

        // Logger.log("find vlaue is" + find);
        //Logger.log("tune vlaue is" + tune);
        if (find = tune) {
            dest.push(compare[j]);
            //var r= compare.getRow.range();
        }
    }
    Logger.log('J value is' + j);

    copyrange.copyValuesToRange(sheet2, 3, 10, j, j);

}

1 回答

  • 1

    可以在函数_1526017中看到:

    copyValuesToRange(sheet,column,columnEnd,row,rowEnd)将范围的内容复制到给定位置 . 如果目标大于或小于源范围,则源将相应地重复或截断 .

    您需要将行和行结束指定为最后一个参数 . 您正在输入变量 j ,这是 for 循环耗尽时的sheet1 "B5:B105" 范围(与 if 的比较无效) . 因此, j 取值 105-5+1=101 . 如果您希望将副本放在第 55 行,只需将 j 更改为行中的 55 . 但是如果您希望它自动完成,您可以使用以下代码:

    function create() {
        var sheet1 = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('sheet1');
        var sheet2 = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('sheet2');
        var dest;
    
        var range1 = sheet1.getRange(5,2);
        var tune = range1.getValue();
        Logger.log('tune is ' + tune);
    
        if (tune != null){ 
            var copyrange = sheet1.getRange("C5:J5");
        }
    
        var compareRange = sheet2.getRange("B5:B105");
        var compareValues = compareRange.getValues();
        Logger.log('sheet2 values are ' + compareValues); 
        var i;
        var dest=[];
    
    
        for(var j=1; j< compareValues.length; j++) {
    
            // Logger.log("find vlaue is" + find);
            //Logger.log("tune vlaue is" + tune);
            if (compareValues[j] == tune) {
                break;
            }
        }
        Logger.log('J value is' + j);
    
        var startRow = compareRange.getRow();
    
        copyrange.copyValuesToRange(sheet2, 3, 10, j+startRow, j+startRow);
    
    }
    

相关问题