2017-10-13 275 views
-1

我正在嘗試清除Google中的電子表格。我使用下面的代碼,但似乎無法讓它工作。我想我的代碼太長了。任何人都可以簡化它?這對我的工作有很大的幫助。Google Sheet清除按鈕

function ClearCell() { 

    var sheet = SpreadsheetApp.getActive().getSheetByName('customer_list'); 
    sheet.getRange("B34:G34").clearContent(); 
    sheet.getRange("H34:J34").clearContent(); 
    sheet.getRange("H37:J37").clearContent(); 
    sheet.getRange("H40:J40").clearContent(); 
    sheet.getRange("H43:J43").clearContent(); 
    sheet.getRange("H46:J46").clearContent();' 

等.................

overview image for the whole code

+0

您是否收到錯誤消息? –

回答

0

大概功能如下:

function ClearCell() 
{ 
    var sheet = SpreadsheetApp.getActive().getSheetByName('customer_list'); 
    sheet.getRange("B34:G34").clearContent(); 
    sheet.getRange("H34:J34").clearContent(); 
    sheet.getRange("H37:J37").clearContent(); 
    sheet.getRange("H40:J40").clearContent(); 
    sheet.getRange("H43:J43").clearContent(); 
    sheet.getRange("H46:J46").clearContent(); 
} 

我看起來沒問題。還有更多嗎?什麼是等等...

+0

嗨SirRubén,錯誤信息是「超出執行時間,所以意味着有390行。抱歉,我無法粘貼所有 – Red

0

你可以嘗試下面..它爲我工作!

var rng = sheet.getRange("H34:J34") 
    for(i=0;i<390;i++){ 
    rng.clearContent() 
    rng=rng.offset(3,0) 
    Logger.log("Clearing " + rng.getA1Notation()) 
    } 
0

您的代碼大量膨脹。你正在做很多getRange().clearContet()的操作。您應該儘可能避免寫入電子表格。如果你不能清除只有1範圍內的值,那麼我建議您使用

dataRange = sheet.getDataRange(); 
arrValues = dataRange.getValues(); 

然後用二維數組,你只需for循環

for (i = 0; i < arrValues.length; i++) { 
    if (/* How to identify the row you wish to delete */) { 
    for (ii = 0; ii < arrValues[i].length; ii++) { 
     if (/* Whatever rule defines that the cell needs to be cleared*/) 
     arrValues[i][ii] = ''; 
    } 
    } 
} 

運行一旦你完成了陣列只是做

dataRange.setValues(arrValues) 

顯然,這只是大概的想法。您可以更好地編寫for環路,當然您需要弄清楚如何識別您希望清除的區域