Google sheets 简化和重新排列我的谷歌脚本,以便更快地处理进程中间的这个过程。

Google sheets 简化和重新排列我的谷歌脚本,以便更快地处理进程中间的这个过程。,google-sheets,google-apps-script,Google Sheets,Google Apps Script,任何人都可以简化和重新安排我的脚本,使它工作得更快而不结巴。此脚本用于从4个电子表格中提取电子表格数据,并根据列标准删除空行。此脚本工作正常,但需要很长时间,并且突然/经常中断流程,表示电子表格页面需要刷新,从而停止整个流程。之后应该重新运行脚本。-提前谢谢 我的脚本如下: function myFunction() { // spreadsheets key to extract data. //Bhaskar 0AjkkHlm3kCphdFh3M2dtRDdoZHhWZlg5UzF

任何人都可以简化和重新安排我的脚本,使它工作得更快而不结巴。此脚本用于从4个电子表格中提取电子表格数据,并根据列标准删除空行。此脚本工作正常,但需要很长时间,并且突然/经常中断流程,表示电子表格页面需要刷新,从而停止整个流程。之后应该重新运行脚本。-提前谢谢

我的脚本如下:

function myFunction() {
// spreadsheets key to extract data.
//Bhaskar      0AjkkHlm3kCphdFh3M2dtRDdoZHhWZlg5UzFjSWZFcVE
//RAmohan      0AjkkHlm3kCphdGFlNTVhSDc5VXVTeS0xc2ZISDRGZlE
//Krishnareddy 0AjkkHlm3kCphdEhDWEllalpoM3VmNE5weUNLZkd4TVE
//Suni          0AjkkHlm3kCphdFUxTXJlN3lGYkRMY2NXUUkzSTVfbEE

    var copieddata = SpreadsheetApp.openById('0AjkkHlm3kCphdFh3M2dtRDdoZHhWZlg5UzFjSWZFcVE').
                    getSheetByName('List').getDataRange().getValues();
                //getSheetByName('List').getRange('I6:AT500').getValues();      

    var s1 = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1");
                SpreadsheetApp.setActiveSheet(s1);
            //getRange(StartingROWS(1,2,3,4,...),StartingCOLUMNS(A,B,C,D..),  

           s1.getRange(1,1,copieddata.length,copieddata[0].length).setValues(copieddata);


    //var col1count = SpreadsheetApp.getActiveSheet().getRange(1,1,copieddata.length,copieddata[0].length).getNumColumns();
    //var row1count = SpreadsheetApp.getActiveSheet().getRange(1,1,copieddata.length,copieddata[0].length).getNumRows();

SpreadsheetApp.flush(); //force the data to be written
// here ends sheet 1  -------

    var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
    var numRows  = sheet.getLastRow(); 
    var datasheet  = sheet.getDataRange();
    var data = datasheet.getValues();

//Browser.msgBox(" data lenght -" + data.length + " rage is " + datasheet);

    for (var i = data.length; i > 0; --i){ 
        var ii=i-1;
        var row = data[ii]; 
        var name = row[6]; 
        var len = name.length;

        //Browser.msgBox("row number" + i + " ->" + row[10] + "<- its length =" + len);

        if(name.length!=3){ 
            //Browser.msgBox("delete ." + i);
            sheet.deleteRow(i);
        } 
   SpreadsheetApp.flush(); //force the data to be written
     } 
   SpreadsheetApp.flush(); //force the data to be written


// ------------------


    var lrange = SpreadsheetApp.getActiveSheet().getLastRow();

//Browser.msgBox("l range - " + lrange); 

    var copieddata = SpreadsheetApp.openById('0AjkkHlm3kCphdGFlNTVhSDc5VXVTeS0xc2ZISDRGZlE').
                    getSheetByName('List').getDataRange().getValues();

    var s1 = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1");
                SpreadsheetApp.setActiveSheet(s1);

        s1.getRange((lrange+1),1,copieddata.length,copieddata[0].length).setValues(copieddata);


    //var col1count = SpreadsheetApp.getActiveSheet().getRange(1,1,copieddata.length,copieddata[0].length).getNumColumns();
    //var row1count = SpreadsheetApp.getActiveSheet().getRange(1,1,copieddata.length,copieddata[0].length).getNumRows();

SpreadsheetApp.flush(); //force the data to be written
// here ends sheet 2  -------

    var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
    var numRows  = sheet.getLastRow(); 
    var datasheet  = sheet.getDataRange();
    var data = datasheet.getValues();

//Browser.msgBox(" data lenght -" + data.length + " rage is " + datasheet);

    for (var i = data.length; i > 0; --i){ 
        var ii=i-1;
        var row = data[ii]; 
        var name = row[6]; 
        var len = name.length;

        //Browser.msgBox("row number" + i + " ->" + row[10] + "<- its length =" + len);

        if(name.length!=3){ 
            //Browser.msgBox("delete ." + i);
            sheet.deleteRow(i);
        } 
   SpreadsheetApp.flush(); //force the data to be written
     } 


// ------------------


    var lrange = SpreadsheetApp.getActiveSheet().getLastRow();

//Browser.msgBox("l range - " + lrange); 

    var copieddata = SpreadsheetApp.openById('0AjkkHlm3kCphdEhDWEllalpoM3VmNE5weUNLZkd4TVE').
                    getSheetByName('List').getDataRange().getValues();

    var s1 = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1");
                SpreadsheetApp.setActiveSheet(s1);

        s1.getRange((lrange+1),1,copieddata.length,copieddata[0].length).setValues(copieddata);


    //var col1count = SpreadsheetApp.getActiveSheet().getRange(1,1,copieddata.length,copieddata[0].length).getNumColumns();
    //var row1count = SpreadsheetApp.getActiveSheet().getRange(1,1,copieddata.length,copieddata[0].length).getNumRows();

SpreadsheetApp.flush(); //force the data to be written  
// here ends sheet 3  -------

    var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
    var numRows  = sheet.getLastRow(); 
    var datasheet  = sheet.getDataRange();
    var data = datasheet.getValues();

//Browser.msgBox(" data lenght -" + data.length + " rage is " + datasheet);

    for (var i = data.length; i > 0; --i){ 
        var ii=i-1;
        var row = data[ii]; 
        var name = row[6]; 
        var len = name.length;

        //Browser.msgBox("row number" + i + " ->" + row[10] + "<- its length =" + len);

        if(name.length!=3){ 
            //Browser.msgBox("delete ." + i);
            sheet.deleteRow(i);
        } 
   SpreadsheetApp.flush(); //force the data to be written
     } 


// ------------------

    var lrange = SpreadsheetApp.getActiveSheet().getLastRow();

//Browser.msgBox("l range - " + lrange); 

    var copieddata = SpreadsheetApp.openById('0AjkkHlm3kCphdFUxTXJlN3lGYkRMY2NXUUkzSTVfbEE').
                    getSheetByName('List').getDataRange().getValues();

    var s1 = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1");
                SpreadsheetApp.setActiveSheet(s1);

        s1.getRange((lrange+1),1,copieddata.length,copieddata[0].length).setValues(copieddata);


    //var col1count = SpreadsheetApp.getActiveSheet().getRange(1,1,copieddata.length,copieddata[0].length).getNumColumns();
    //var row1count = SpreadsheetApp.getActiveSheet().getRange(1,1,copieddata.length,copieddata[0].length).getNumRows();

SpreadsheetApp.flush(); //force the data to be written  
// here ends sheet 4  -------

    var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
    var numRows  = sheet.getLastRow(); 
    var datasheet  = sheet.getDataRange();
    var data = datasheet.getValues();

//Browser.msgBox(" data lenght -" + data.length + " rage is " + datasheet);

    for (var i = data.length; i > 0; --i){ 
        var ii=i-1;
        var row = data[ii]; 
        var name = row[6]; 
        var len = name.length;

        //Browser.msgBox("row number" + i + " ->" + row[10] + "<- its length =" + len);

        if(name.length!=3){ 
            //Browser.msgBox("delete ." + i);
            sheet.deleteRow(i);
        } 
   SpreadsheetApp.flush(); //force the data to be written
     } 
}
函数myFunction(){
//电子表格是提取数据的关键。
//Bhaskar 0AJKKHLM3KCPHDFH3M2DTRDDOZHWZLG5UZFJSWZFCVE
//RAmohan 0AjkkHlm3kCphdGFlNTVhSDc5VXVTeS0xc2ZISDRGZlE
//Krishnareddy 0AJKKHLM3KCPHDEHWALLALPOM3VMNE5WEUNLZKD4TVE
//Suni 0AjkkHlm3kCphdFUxTXJlN3lGYkRMY2NXUUkzSTVfbEE
var copieddata=SpreadsheetApp.openById('0AjkkHlm3kCphdFh3M2dtRDdoZHhWZlg5UzFjSWZFcVE')。
getSheetByName('List').getDataRange().getValues();
//getSheetByName('List').getRange('I6:AT500').getValues();
var s1=SpreadsheetApp.getActiveSpreadsheet().getSheetByName(“Sheet1”);
电子表格应用程序setActiveSheet(s1);
//getRange(起始行(1,2,3,4,…),起始列(A,B,C,D…),
s1.getRange(1,1,copieddata.length,copieddata[0].length).setValues(copieddata);
//var col1count=SpreadsheetApp.getActiveSheet().getRange(1,1,copieddata.length,copieddata[0].length).getNumColumns();
//var row1count=SpreadsheetApp.getActiveSheet().getRange(1,1,copieddata.length,copieddata[0].length).getNumRows();
SpreadsheetApp.flush();//强制写入数据
//第1页到此结束-------
var sheet=SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var numRows=sheet.getLastRow();
var datasheet=sheet.getDataRange();
var data=datasheet.getValues();
//Browser.msgBox(“数据长度-”+data.length+“范围为”+数据表);
对于(var i=data.length;i>0;--i){
var ii=i-1;
var行=数据[ii];
变量名称=行[6];
var len=name.length;
//msgBox(“行号”+i+“->”+行[10]+“”+行[10]+“”+行[10]+“”+行[10]+“”+行[10]+”以下是我的尝试:

function myFunction2() {
  var source = ['0AjkkHlm3kCphdFh3M2dtRDdoZHhWZlg5UzFjSWZFcVE',
                '0AjkkHlm3kCphdGFlNTVhSDc5VXVTeS0xc2ZISDRGZlE',
                '0AjkkHlm3kCphdEhDWEllalpoM3VmNE5weUNLZkd4TVE',
                '0AjkkHlm3kCphdFUxTXJlN3lGYkRMY2NXUUkzSTVfbEE'];
  var copied = [];
  for (var i = 0; i < source.length; i++) {
    copied = copied.concat(SpreadsheetApp.openById(source[i]).getSheetByName('List').getDataRange().getValues());
  }
  for (var j = 0; j < copied.length; j++) {
    if (copied[j][6].length != 3) {
      copied.splice(j, 1);
      j--;
    }
  }
  var sheet = SpreadsheetApp.getActive().getSheetByName('Sheet1');
  sheet.clearContents();
  sheet.getRange(1, 1, copied.length, copied[0].length).setValues(copied);
}
函数myFunction2(){
变量源=['0AjkkHlm3kCphdFh3M2dtRDdoZHhWZlg5UzFjSWZFcVE',
“0AjkkHlm3kCphdGFlNTVhSDc5VXVTeS0xc2ZISDRGZlE”,
“0AJKKHLM3KCPHDEHDHELLADALPOM3VMNE5WEUNLZKD4TVE”,
“0AjkkHlm3kCphdFUxTXJlN3lGYkRMY2NXUUkzSTVfbEE”];
var=[];
对于(变量i=0;i
在本文中,我从四个电子表格中创建了一个大的javascript数组,从该数组中删除元素(“行”),而不是删除电子表格中的行,我认为这是速度慢的原因,清除目标表格,并一次性设置修改数组的值

嗯 亚当

以下是我的尝试:

function myFunction2() {
  var source = ['0AjkkHlm3kCphdFh3M2dtRDdoZHhWZlg5UzFjSWZFcVE',
                '0AjkkHlm3kCphdGFlNTVhSDc5VXVTeS0xc2ZISDRGZlE',
                '0AjkkHlm3kCphdEhDWEllalpoM3VmNE5weUNLZkd4TVE',
                '0AjkkHlm3kCphdFUxTXJlN3lGYkRMY2NXUUkzSTVfbEE'];
  var copied = [];
  for (var i = 0; i < source.length; i++) {
    copied = copied.concat(SpreadsheetApp.openById(source[i]).getSheetByName('List').getDataRange().getValues());
  }
  for (var j = 0; j < copied.length; j++) {
    if (copied[j][6].length != 3) {
      copied.splice(j, 1);
      j--;
    }
  }
  var sheet = SpreadsheetApp.getActive().getSheetByName('Sheet1');
  sheet.clearContents();
  sheet.getRange(1, 1, copied.length, copied[0].length).setValues(copied);
}
函数myFunction2(){
变量源=['0AjkkHlm3kCphdFh3M2dtRDdoZHhWZlg5UzFjSWZFcVE',
“0AjkkHlm3kCphdGFlNTVhSDc5VXVTeS0xc2ZISDRGZlE”,
“0AJKKHLM3KCPHDEHDHELLADALPOM3VMNE5WEUNLZKD4TVE”,
“0AjkkHlm3kCphdFUxTXJlN3lGYkRMY2NXUUkzSTVfbEE”];
var=[];
对于(变量i=0;i
在本文中,我从四个电子表格中创建了一个大的javascript数组,从该数组中删除元素(“行”),而不是删除电子表格中的行,我认为这是速度慢的原因,清除目标表格,并一次性设置修改数组的值


Adam

太棒了!!看到这样的坚挺感到惊讶!!谢谢AdamL先生,非常感谢。我不知道这个论坛上有什么最佳实践,但我没有对一个新问题提交另一个答案,而是冒昧地进入了“myFunction3”“输入您的电子表格供您试用。同时,您能否建议我如何筛选和复制四行不同的数据,即基于第6列的“GEN”、“BCD”、“INC”、“PLA”,应直接复制到上述同一脚本中的sheet1、sheet2、sheet3、sheet4(从不同的电子表格组中累积的数据到一个电子表格中)这是我试图用同一个脚本做的,如果(复制[j][6].length!=3&&copied[j][6].trim=='GEN'){只添加了'code',但它没有正确验证,而是复制了每一个ting。-提前谢谢。在我发布我的评论后,您编辑了您的评论,但我的评论是对第二个请求的回复(为了避免混淆)。我已经完成了这个功能,非常感谢您在解决我的问题时给予的支持和帮助!非常感谢。最后,如果我有任何时间打扰您,我感到非常抱歉。太棒了!!看到这个功能很快就感到惊讶!!谢谢您AdamL先生,非常感谢。我不知道这个论坛的最佳实践是什么,但我没有对一个新问题提交另一个答案,而是冒昧地将“myFunction3”输入您的电子表格供您试用。同时,您能否建议我如何筛选和复制四行不同的d