Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 谷歌应用程序脚本-谷歌电子表格根据单元格值高效移动行_Javascript_Google Apps Script_Google Sheets Api - Fatal编程技术网

Javascript 谷歌应用程序脚本-谷歌电子表格根据单元格值高效移动行

Javascript 谷歌应用程序脚本-谷歌电子表格根据单元格值高效移动行,javascript,google-apps-script,google-sheets-api,Javascript,Google Apps Script,Google Sheets Api,我正在尝试根据单元格值移动行,我编写的函数很有效。但是,当要移动的行数超过24行时,脚本超时。有没有办法使循环运行得更快或更有效,因为它总是超时的 脚本读取第7(G)列的单元格值,如果它与某个销售人员的姓名匹配,则将其复制到有其姓名的工作表中 函数CopyDataToNewFile(){ //要复制多少列 var columnscopycount=11;//A=1 B=2 C=3。。。。 //监控哪个栏目 var columnsToMonitor=7;//A=1 B=2 C=3….监视销售人员

我正在尝试根据单元格值移动行,我编写的函数很有效。但是,当要移动的行数超过24行时,脚本超时。有没有办法使循环运行得更快或更有效,因为它总是超时的

脚本读取第7(G)列的单元格值,如果它与某个销售人员的姓名匹配,则将其复制到有其姓名的工作表中

函数CopyDataToNewFile(){
//要复制多少列
var columnscopycount=11;//A=1 B=2 C=3。。。。
//监控哪个栏目
var columnsToMonitor=7;//A=1 B=2 C=3….监视销售人员姓名
//目标数据表
var Salesorson1=“Lorna”;
var Salesorson2=“Sarah”;
var Salesorson3=“标记”;
//源电子表格
var ss=电子表格应用程序openById('1S3F0Dekyda4g77j_a150Obz0IDNKtWMU2WlGDSXdcD4');
var sourceSpreadsheetId=ss.getSheetByName(“importdata”);
var sourceSpreadSheetSheetID1=ss.getSheetByName(salerson1);
var sourceSpreadSheetSheetID2=ss.getSheetByName(salerson2);
var sourceSpreadSheetSheetID3=ss.getSheetByName(salerson3);
var numRows=sourceSpreadsheetId.getLastRow()+1;
对于(变量i=2;i}
我已经优化了下面的代码。现在,总运行时间为0.864秒

function CopyDataToNewFile() {

    // How Many Columns over to copy
    var columsCopyCount = 11; // A=1 B=2 C=3 ....

    // What Column to Monitor
    var columnsToMonitor = 7; // A=1 B=2 C=3 ....MONITORS SALES PERSON NAME

    //TARGET SPREAD SHEETS
    var salesPerson1 = "Lorna";
    var salesPerson2 = "Sarah";
    var salesPerson3 = "Mark";

    //SOURCE SPREAD SHEET
    var ss = SpreadsheetApp.openById('164nb8HbOPX8204KFlrF0BZeuZ-rCjoxojYT5jvEIuNU');
    var sourceSpreadSheetSheetID = ss.getSheetByName("importdata");
    var sourceSpreadSheetSheetID1 = ss.getSheetByName(salesPerson1);
    var sourceSpreadSheetSheetID2 = ss.getSheetByName(salesPerson2);
    var sourceSpreadSheetSheetID3 = ss.getSheetByName(salesPerson3);

    var data = sourceSpreadSheetSheetID.getRange(2, 1, sourceSpreadSheetSheetID.getLastRow() - 1, sourceSpreadSheetSheetID.getLastColumn()).getValues();

    var lorna = [];
    var sarah=[];
    var mark=[];


    for (var i = 0; i < data.length; i++) {

        var rValue = data[i][6];

        if (rValue == salesPerson1) {
            lorna.push(data[i]);
        } else if (rValue == salesPerson2) {
            sarah.push(data[i]);
        } else if (rValue == salesPerson3) {
            mark.push(data[i]);
        } else { //Fail Safe
            lorna.push(data[i]);
        }
    }

    if(lorna.length > 0){
      sourceSpreadSheetSheetID1.getRange(sourceSpreadSheetSheetID1.getLastRow() + 1, 1, lorna.length, lorna[0].length).setValues(lorna);
    }

    if(sarah.length > 0){
       sourceSpreadSheetSheetID2.getRange(sourceSpreadSheetSheetID2.getLastRow() + 1, 1, sarah.length, sarah[0].length).setValues(sarah);
    }

    if(mark.length > 0){
      sourceSpreadSheetSheetID3.getRange(sourceSpreadSheetSheetID3.getLastRow() + 1, 1, mark.length, mark[0].length).setValues(mark);
    }

    //Will delete the rows of importdata once the data is copided to other sheets
   sourceSpreadSheetSheetID.deleteRows(2, sourceSpreadSheetSheetID.getLastRow() - 1);
}
函数CopyDataToNewFile(){
//要复制多少列
var columnscopycount=11;//A=1 B=2 C=3。。。。
//监控哪个栏目
var columnsToMonitor=7;//A=1 B=2 C=3….监视销售人员姓名
//目标数据表
var Salesorson1=“Lorna”;
var Salesorson2=“Sarah”;
var Salesorson3=“标记”;
//源电子表格
var ss=SpreadsheetApp.openById('164NB8HBPX8204KFLRF0BZEUZ-rCjoxojYT5jvEIuNU');
var sourceSpreadsheetId=ss.getSheetByName(“importdata”);
var sourceSpreadSheetSheetID1=ss.getSheetByName(salerson1);
var sourceSpreadSheetSheetID2=ss.getSheetByName(salerson2);
var sourceSpreadSheetSheetID3=ss.getSheetByName(salerson3);
var data=sourceSpreadsheetId.getRange(2,1,sourceSpreadsheetId.getLastRow()-1,sourceSpreadsheetId.getLastColumn()).getValues();
var lorna=[];
var sarah=[];
var标记=[];
对于(变量i=0;i0){
SourceSpreadsheetID1.getRange(SourceSpreadsheetID1.getLastRow()+1,1,lorna.length,lorna[0].length)。设置值(lorna);
}
如果(sarah.length>0){
sourceSpreadsheetID2.getRange(sourceSpreadsheetID2.getLastRow()+1,1,sarah.length,sarah[0].length).setValues(sarah);
}
如果(标记长度>0){
sourceSpreadSheetSheetID3.getRange(SourceSpreadsheetID3.getLastRow()+1,1,mark.length,mark[0].length)。设置值(标记);
}
//将数据复制到其他工作表后,将删除导入数据的行
SourceSpreadsheetId.deleteRows(2,SourceSpreadsheetId.getLastRow()-1);
}

太棒了!谢谢你的快速回复。最后一个问题,这最后一行清除了该行。如何完全删除已移动的行,使数据之间没有空行。非常感谢。