让'activeSpreadsheet.getSheetByName()'动态更改

时间:2017-06-05 15:01:04

标签: javascript

请参阅下面的图片

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中生成结果!这同样适用于我的文件的每一页。当我按下“运行”按钮时,我只需要为该特定工作表运行代码。

亲爱的朋友们,请帮忙!

1 个答案:

答案 0 :(得分: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])
                }
            }
        }
    }
}