2013-03-15 35 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

相關問題