2016-11-17 64 views
1

列C中有一個ID與其中的幾行相關,但只有第一行中有一個ID。Google表格腳本填充列中的間歇性空白

我需要將該ID值複製到下面的空白單元格,直到我點擊其中具有其他值的單元格。

Picture of the spreadsheet

我試圖適應這個劇本,但它擊中超時錯誤。

function myFunction() { 
    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var sheet = ss.getActiveSheet(); 
    var last = sheet.getLastRow();//how many times should I do this? 

    for (i = 5528; i < last; i++) { 
    var test = sheet.getRange(i, 1,1,1); 
    //Logger.log(test); 
    //looks to see if the cell is empty 
    if (test.isBlank()) { 
     var rewind = sheet.getRange(i-1, 1, 1, 1).getValues();//gets values from the row above 
     sheet.getRange(i, 1, 1, 1).setValues(rewind);//sets the current range to the row above 
    } 

    } 
} 

我被設置爲一個大數字,因爲每次超時我都要重新開始!

我已經讀過將數組中的列引入數組中,然後將其放回去以節省大量時間。

我試圖去適應這個,但不能通過變量。

我在正確的軌道上嗎?我希望爲未來提供一個解決方案,讓我可以傳遞一個列或範圍並執行相同的操作。

這裏是我的失敗嘗試:

function FillDown2() { 
    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var sheet = ss.getSheetByName("Sheet2"); 
    var tracts = sheet.getRange("C15:C").getValues(); 
    var allTractList = []; 
    var title; 

    for (var row = 0, var len = tracts.length; row < len; row++) { 
    if (tracts[row][0] != '') { 
     //response = UrlFetchApp.fetch(tracts[row]); 
     //doc = Xml.parse(response.getContentText(),true); 
     title = tracts[row][0]; 
     //newValues.push([title]); 
     allTractList.push([title]); 
     Logger.log(title); 
    } else allTractList.push([title]); 
    } 

    //Logger.log('newValues ' + newValues); 
    Logger.log('allTractList ' + allTractList); 

    // SET NEW COLUMN VALUES ALL AT ONCE! 
    sheet.getRange("B15").offset(0, 0, allTractList.length).setValues(allTractList); 
    return allTractList; 
} 
+0

我很高興你找到一個解決方案。如果您包含錯誤消息的確切字詞,您的問題可能會更好。參考[mcve]。 –

回答

0

聖抽菸!我做的!

不知道爲什麼發生錯誤,但我做了一些改變,並得到它的工作!

希望這是幫助他人:

function FillDown2() { 
    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var sheet = ss.getSheetByName("Sheet2"); 
    var tracts = sheet.getRange("C15:C").getValues(); 
    var allTractList = []; 
    var title; 
    var len = tracts.length; 

    for (var row = 0; row < len; row++) { 
    if (tracts[row] != '') { 
     //response = UrlFetchApp.fetch(tracts[row]); 
     //doc = Xml.parse(response.getContentText(),true); 
     title = tracts[row]; 
     //newValues.push([title]); 
     allTractList.push([title]); 
     Logger.log(title); 
    } else allTractList.push([title]); 
    } 

    //Logger.log('newValues ' + newValues); 
    Logger.log('allTractList ' + allTractList); 

    // SET NEW COLUMN VALUES ALL AT ONCE! 
    sheet.getRange("B15").offset(0, 0, allTractList.length).setValues(allTractList); 
    return allTractList; 
} 

感謝布萊恩here: