Google apps script 数组中的错误:最后一个值是';正确';第一行的

Google apps script 数组中的错误:最后一个值是';正确';第一行的,google-apps-script,google-sheets,Google Apps Script,Google Sheets,我想创建一个脚本来 -归档人员从“登记表”到“归档”离开大楼 -删除空行或清除剩余人员的行(单元格不为空输入输出) 下面是m y脚本: function archive() { //variables pour la feuille registre var registre = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Registre"); // le script se positionne sur la fe

我想创建一个脚本来 -归档人员从“登记表”到“归档”离开大楼 -删除空行或清除剩余人员的行(单元格不为空输入输出)

下面是m y脚本:

   function archive() {
  //variables pour la feuille registre
  var registre = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Registre"); // le script se positionne sur la feuille Registre
  var lastRowReg = registre.getLastRow();   // obtenir le numero de la dernière ligne éditée
  var data = registre.getRange(2, 1, lastRowReg-1,7 ).getValues();
  //variables pour la feuille archive
  var archive = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Archive");
  var lastRowArch = archive.getLastRow();
  var target = new Array();
  //recherche
  for (var i = 0; i < data.length; ++i) { //création de la boucle qui va analyser chaque ligne du tableau

    if (data[i][6]=!'') { //pour les lignes la cellule heure de sortie est vide, 
      target.push(data[i]);
      egistre.getRange(i+2,1,1,7).clearContent();
      }
    if(target.length>0){
    archive.getRange(lastRowArch+1, 1, target.length,target[0].length).setValues(target); 
    }
  }

}
函数存档(){
//弗耶寄存器
var registre=SpreadsheetApp.getActiveSpreadsheet().getSheetByName(“registre”);//脚本se positionne sur la feuille registre
var lastRowReg=registre.getLastRow();//获取木质素编号
var data=registre.getRange(2,1,lastRowReg-1,7).getValues();
//福耶尔档案馆
var archive=SpreadsheetApp.getActiveSpreadsheet().getSheetByName(“存档”);
var lastRowArch=archive.getLastRow();
var target=新数组();
//里切切
对于(var i=0;i0){
archive.getRange(lastRowArch+1,1,target.length,target[0].length).setValues(target);
}
}
}
调试:数据=

[[“小姐”、“穆斯”、“gh”、“巴扎”、“da45adazd54”、“13h00”,正确], [“小姐”、“穆斯”、“gh”、“巴扎”、“da45adazd54”、“13h00”、“14h00”]

为什么是真的而不是13h45


请这样尝试:

function archive() {
  //variables pour la feuille registre
  var registre = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Registre"); // le script se positionne sur la feuille Registre
  var lastRowReg = registre.getLastRow();   // obtenir le numero de la dernière ligne éditée
  var data = registre.getRange(2, 1, lastRowReg-1,7 ).getValues();
  //variables pour la feuille archive
  var archive = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Archive");
  var lastRowArch = archive.getLastRow();
  var target = new Array();
  //recherche
  for (var i = 0; i < data.length; ++i) { //création de la boucle qui va analyser chaque ligne du tableau

    if (data[i][6]=='') { //pour les lignes la cellule heure de sortie est vide, 
      target.push(data[i]);
      registre.getRange(i+2,1,1,7).clearContent();
      }
    }
    if(target.length>0){
    archive.getRange(lastRowArch+1, 1, target.length,target[0].length).setValues(target); 
  }
}
函数存档(){
//弗耶寄存器
var registre=SpreadsheetApp.getActiveSpreadsheet().getSheetByName(“registre”);//脚本se positionne sur la feuille registre
var lastRowReg=registre.getLastRow();//获取木质素编号
var data=registre.getRange(2,1,lastRowReg-1,7).getValues();
//福耶尔档案馆
var archive=SpreadsheetApp.getActiveSpreadsheet().getSheetByName(“存档”);
var lastRowArch=archive.getLastRow();
var target=新数组();
//里切切
对于(var i=0;i0){
archive.getRange(lastRowArch+1,1,target.length,target[0].length).setValues(target);
}
}
  • 从数组到工作表的写操作必须放在循环之外
  • if语句是错误的(至少与您的注释和描述不对应…)
  • 我在你的文件副本上进行了测试,它似乎按预期工作。。。我没有真正的价值观


    编辑以下评论:

    现在我想我正确地理解了你愿意做什么。 我使用了一种稍有不同的方法,可以更快、更清晰地工作(在我看来)

    我使用了两个数组,一个用于表2(存档)的数据,另一个用于保留行(我称之为newsource),因此现在我可以清除整个源表(标题除外),一次写入整个数据,而不需要空白行

    下面是经过测试和运行的代码

    function archive() {
      //variables pour la feuille registre
      var registre = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Registre"); // le script se positionne sur la feuille Registre
      var lastRowReg = registre.getLastRow();   // obtenir le numero de la dernière ligne éditée
      var data = registre.getRange(2, 1, lastRowReg-1,7 ).getValues();
      //variables pour la feuille archive
      var archive = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Archive");
      var lastRowArch = archive.getLastRow();
      var target = new Array();
      var newsource = new Array();
      //recherche
      for (var i = 0; i < data.length; ++i) { //création de la boucle qui va analyser chaque ligne du tableau
    
        if (data[i][6]!='') { //pour les lignes la cellule heure de sortie est vide, 
          target.push(data[i]);
          }else{
          newsource.push(data[i]);
        }
      }
      if(target.length>0){
       archive.getRange(lastRowArch+1, 1, target.length,target[0].length).setValues(target); 
       }
      Logger.log(lastRowReg-1+' = '+newsource.length+' + '+target.length)
      registre.getRange(2, 1, lastRowReg-1,7 ).clearContent();
       if(newsource.length>0){
         registre.getRange(2,1,newsource.length,newsource[0].length).setValues(newsource);
        }
    }
    
    函数存档(){
    //弗耶寄存器
    var registre=SpreadsheetApp.getActiveSpreadsheet().getSheetByName(“registre”);//脚本se positionne sur la feuille registre
    var lastRowReg=registre.getLastRow();//获取木质素编号
    var data=registre.getRange(2,1,lastRowReg-1,7).getValues();
    //福耶尔档案馆
    var archive=SpreadsheetApp.getActiveSpreadsheet().getSheetByName(“存档”);
    var lastRowArch=archive.getLastRow();
    var target=新数组();
    var newsource=新数组();
    //里切切
    对于(var i=0;i0){
    archive.getRange(lastRowArch+1,1,target.length,target[0].length).setValues(target);
    }
    Logger.log(lastRowReg-1+'='+newsource.length+'+'+target.length)
    getRange(2,1,lastRowReg-1,7).clearContent();
    如果(newsource.length>0){
    registre.getRange(2,1,newsource.length,newsource[0].length).setValues(newsource);
    }
    }
    

    我添加了一个Logger.log,它显示了一种行计数的“验证”,以确保没有丢失任何行…

    好的,Serge它被修改了。我修改了脚本的目标,因为它不干净。真的总是在数组中。。。我认为“推动”是有问题的。你可以写我的工作表和脚本,这是我出版的副本。谢谢对不起,我不在。。。您的电子表格中有什么问题?它似乎工作得很好…在冲洗中,我做了一个完美的例子。如果我写入时间但不写入超时,则该行将保留在工作表注册表中,但如果我写入超时(单元格不为空),则当我运行脚本时,该行将“剪切粘贴”到工作表存档中。问题是,所有内容都被擦除,而不仅仅是写入超时的行。