2017-03-05 36 views
0

謝謝你,並提前抱歉我的令人難以置信的未經驗的問題。所以,我想編一個代碼,我知道我想要它做什麼,我只是不知道如何編程。我需要的是:我有一個僞代碼,但不能編碼

功能GenPre()
1.-刪除範圍Presupuesto A12:C42
2:複製範圍小鬼A2:!!!在Presupuesto A12進出口C33值:Presupuesto C42(IMP單元格是公式,我想複製這些值)
3.-僅顯示Presupuesto!A12中的列A中的已用行:A42(考慮某些行將已隱藏,因此先取消隱藏它們將是一個想法) 4.-去表Presupuesto(一旦我做這個功能,我想結束在表上Presupuesto
end Generar

這個函數將是r通過同一電子表格中另一張工作表中的按鈕取消。

,到目前爲止,我有這樣的:

function GenPre() { 
    var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetbyname(Presupuesto); 
//next step is to select and delete the content of the range on the sheet 
} 

我知道我要求太多,我只是找不到太多關於選擇定義的小區......我真的不知道該怎麼編程呢。

非常感謝!

編輯

於是,我開始什麼k4k4sh1回答調整和得到這個(和隱藏含有「X」在給定的電池單元排閱讀其他職位):

function GenPre() { 

    var sheetp = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Presupuesto') //name a variable to the sheet where we're pasting information 
    var sheetc = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Imp')   //name a variable to the sheet frome where we're copying information 
    sheetp.getRange('a12:c41').clearContent()          //delete all values in the range where we're copying 
    sheetc.getRange('A2:C31').copyValuesToRange(sheetp,1,3,12,41);     //copy from source range to destination range 
    sheetp.showRows(12,41);               //make sure all rows in the destination range are shown 
    for(i=12 ; i<=41 ; i++) { 
     if (sheetp.getRange('A'+i).getValue() == '') { // status == '' 
     sheetp.hideRows(i); 
     } 
    } 
} 

特腳本運行它應該如何,但現在,我希望它運行得更快(需要12秒才能運行,當它看起來不那麼重)時,是否有將視圖切換到sheetp的功能?謝謝你們!

+0

[爲什麼「有人能幫助我嗎?」不是一個實際的問題?(http://meta.stackoverflow.com/q/284236) –

回答

0


你要求我們做的所有工作:) 讓我們從你的代碼開始: .getSheetByName(shName)接受字符串作爲參數,所以你應該將其更改爲
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Presupuesto');的方法。 請注意,JavaScript區分大小寫,因此.getSheetbyname.getSheetByName()不一樣。 根據Sheet Class Reference使用sheet.getRange()來獲取您的Range對象。看看Range Class Reference:清除範圍內容,包括格式使用.clear(),只清除格式完整的內容使用.clearContent()。 要隱藏未使用的行嘗試:

function hideRows(sheetName, column) { 
    var s = SpreadsheetApp.getActive().getSheetByName(sheetName); 
    s.showRows(1, s.getMaxRows()); 
    s.getRange(column) 
     .getValues() 
     .forEach(function (r, i) { 
      if (r[0] == '') {s.hideRows(i + 1);} 
     }); 
} 
// hideRows('Presupuesto', 'A12:A42'); 
+0

k4ksh1,這是爲我編碼黃金,我會與此合作,如果這還不夠,將發佈一個看起來不像這個問題的問題。這完全是我需要的(讓我開始的東西)。 –

+0

不要擔心:如果您再次卡住您的代碼,我們將通過它! – k4k4sh1

+0

我實際上已經開始工作,但運行速度很慢。在你的指導下,我找到了靈感,並做了很多,只是運行速度太慢。 (每個命令大約需要0.3秒),所以我會試着用一個命令隱藏所有的行,只需要知道如何。謝謝!! –