2013-03-15 75 views
0

我想创建一个脚本到 -archive people将表单从“表单”注册到“存档” - 删除空行或清空行人离开(小区OUT不为空)Array中的错误:第一行的最后一个值为'true'

Herer是我的脚本:

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); 
    } 
    } 

} 

DEBUG:数据=

[ “小姐”, “搞乱”, “GH”,“巴扎尔“,”da45adazd54“,”13h00“,真], [ “小姐”, “搞乱”, “GH”, “巴扎”, “da45adazd54”, “13:00”, “14:00”]]

为什么真正的而不是13h45?

The document link

谢谢您的帮助

+0

好吧,塞尔它那修改。 – jlSta 2013-03-15 12:21:01

+0

我修改脚本的目标,因为它不干净 – jlSta 2013-03-15 13:13:49

回答

1

请您尝试一下这样的:

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); 
    } 
} 
  1. 写从阵列到纸张背面必须放置在循环
  2. 之外
  3. if语句错误(至少不对应您的评论和说明...)

我测试了一份你的文档,它似乎按预期工作......我没有'真正的'价值。


编辑以下您的意见:

现在我认为我的理解正确你愿意做的事。 我用明确的工作更快,更(在我看来)一个稍微不同的方法

我用了2个阵列,一个与表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); 
    } 
} 

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

+0

真正的总是在阵列中......我认为“推”是有问题的。你可以在我的工作表和脚本上工作,这是我发布的一个副本。谢谢 – jlSta 2013-03-15 13:16:35

+0

对不起,我离开了......你的电子表格有什么问题?它似乎运作良好... – 2013-03-15 14:58:17

+0

在doucement中,我做了一个完美的例子。如果我写入时间,但不是超时,该行保留在表单注册表中,但是如果我写入超时(单元格不为空),那么当我运行脚本时,该行将被“剪切粘贴”到表单存档。 问题是,所有的东西都被擦除了,不仅是超时写入的行。 – jlSta 2013-03-15 15:18:19

相关问题