2017-06-05 85 views
0

請參考下面走走activeSpreadsheet.getSheetByName()'改變動態

enter image description here

圖片我有這個GoogleSheets電子表格,在它的標籤(張)的一羣。以下代碼需要爲每片運行:

function SearchCols() 
{ 
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1"),      
    searchVal = sheet.getRange("L7").getValue(),            
    searchCol = sheet.getRange('L11:L30').getValues();           
    searchCol1 = sheet.getRange ('R11:R30').getValues();          
    searchCol2 = sheet.getRange('Q11:Q30').getValues();          
    searchCol3 = sheet.getRange('S11:S30').getValues(); 
    searchCol4 = sheet.getRange('T11:T30').getValues(); 

for (var i = 0, len = searchCol2.length; i < len; i++)           
for (var j = 0, len2 = searchCol1.length; j < len2; j++)          
    { 
     if (searchCol2[j][0] == searchVal && searchCol1[j][0] == searchCol[i] 
[0])    
     { 
     sheet.getRange('N11:N10').setValue;             
     sheet.getRange(i + 11, 14).setValue(searchCol3[j][0])         
     sheet.getRange(i + 11, 15).setValue(searchCol4[j][0])         
     } 
    } 
} 

它只是一些代碼來循環通過柱,以查看是否有任何值與另一列相匹配,如果是的話,一些數據粘貼到相鄰的小區。

該代碼有效,但...

請參閱第3行代碼?它說:「.getSheetByName(」Sheet1「)」???

如何更改「Sheet1」部件,以便它動態知道我所在的工作表,以便爲特定表單運行代碼?

我在文件中的每一個片上「運行」按鈕,但我只希望這個代碼爲我按在按鈕板運行。(看附截圖!)

方式現在,如果我在Sheet50中並按下按鈕來運行此代碼,它將在Sheet1中生成結果,但我需要它在Sheet50中生成結果!這同樣適用於我的每一張文件。當我按下'運行'按鈕時,我需要代碼才能運行該特定工作表。

請大家幫忙,親愛的朋友們!

+0

我想我可能已經找到了。這是嗎?因爲它似乎工作!: var sheet = SpreadsheetApp.getActiveSheet(); – Gjuelz

回答

0

要遍歷所有的表:

獲取所有紙張的使用.getSheets()然後用for遍歷所有的電子表格紙張的迭代電子表格。

這是修改代碼的工作,你問:

function SearchCols() { 

    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var sheets = ss.getSheets(); 

    for (var i = 0; i < sheets.length; i++) { 
     var sheet = ss.getSheetByName(sheets[i].getName()); 

     var searchVal = sheet.getRange("L7").getValue(); 
     var searchCol = sheet.getRange('L11:L30').getValues(); 
     var searchCol1 = sheet.getRange('R11:R30').getValues(); 
     var searchCol2 = sheet.getRange('Q11:Q30').getValues(); 
     var searchCol3 = sheet.getRange('S11:S30').getValues(); 
     var searchCol4 = sheet.getRange('T11:T30').getValues(); 

     for (var x = 0, len = searchCol2.length; x < len; x++) { 
      for (var j = 0, len2 = searchCol1.length; j < len2; j++) { 

       if (searchCol2[j][0] == searchVal && searchCol1[j][0] == searchCol[x][0]) { 
        sheet.getRange('N11:N10').setValue; 
        sheet.getRange(x + 11, 14).setValue(searchCol3[j][0]) 
        sheet.getRange(x + 11, 15).setValue(searchCol4[j][0]) 
       } 
      } 
     } 
    } 
}