2016-11-17 8 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:

関連する問題