Javascript 如何在google apps脚本中获取特定列中的行号

Javascript 如何在google apps脚本中获取特定列中的行号,javascript,google-apps-script,google-sheets,Javascript,Google Apps Script,Google Sheets,在我的电子表格中,我有12张表格。每一张纸都有一个城市的名字。它还以其相应的名称出现在每张图纸的A列中 要本地化vba中的行号,我使用以下代码 Q = 0 For Each Sheet In ThisWorkbook.Worksheets //Result is the last sheet If Sheet.Name <> "Result" Then With Sheet number = .Range("A:A").Fi

在我的电子表格中,我有12张表格。每一张纸都有一个城市的名字。它还以其相应的名称出现在每张图纸的A列中

要本地化vba中的行号,我使用以下代码

Q = 0

 For Each Sheet In ThisWorkbook.Worksheets 

    //Result is the last sheet
   If Sheet.Name <> "Result" Then

    With Sheet      
        number = .Range("A:A").Find(Sheet.Name).Row + 1
    totalnumber = .Range("A" & Rows.Count).End(xlUp).Row

Q = Q + (number - totalnumber + 1) * 31
          //I use this for get the date from a month
          For i = 1 To 12
            If arr(i) = .Range("a2") Then    
               YY = Year(Now)
               MM = Month(CDate("01/" & i & "/" & YY))
               Exit For
            End If
          Next
      End With
   End If
Next
  • 首先,您需要一个函数:

    function myFunction() {
      // next code will be written here, line by line
    }
    
  • 然后,您需要打开电子表格

    var ss = SpreadsheetApp.openById("1lqLHXt15SKamuGTnIjQoAAiWuuxEJOUcY1ZdamxCk_0"); // you can actually use this id. Link below the post.
    
    从现在起,
    ss
    将成为我们的电子表格

  • 那你需要把你所有的床单都拿来

    var allMySheets = ss.getSheets();
    
    allMySheets
    现在是一个-每个元素都是我们电子表格中的一张表

  • var ss = SpreadsheetApp.openById("1lqLHXt15SKamuGTnIjQoAAiWuuxEJOUcY1ZdamxCk_0"); // you can actually use this id. Link below the post.
    
  • 现在我们需要检查每张表。有,但在本例中我们将使用
    forEach
    方法:

    allMySheets.forEach(function(sheet){
      //                         ^ note
      // next code will be written here, line by line
    })
    
    这样做的目的是为
    allMySheets
    中的每个元素调用内部函数,并将该函数作为参数提供给元素。从这里开始,
    sheet
    就是我们的工作表

  • 。我们需要其名称使用:

  • 我们还需要包含数据的范围:

    var dataRange = sheet.getDataRange();
    
  • 和实际值:

    var dataValues = dataRange.getValues();
    
  • dataValues
    现在是一个二维数组,看起来像这样:

    [
      ["Column 1", "Column 2", "Column 3"],
      ["Some val", "Some val2", 15],
      [3,8,0],
    ]
    
    并转化为您在该表中看到的实际表格:

    +----------+-----------+----------+
    | Column 1 | Column 2  | Column 3 |
    +----------+-----------+----------+
    | Some val | Some val2 |       15 |
    | 3        | 8         |        0 |
    +----------+-----------+----------+
    
    我们需要把这个循环一下。对于循环,我们将使用两个
    。第一个表示行,另一个表示列:

    for (var i=0;i<dataValues.length;i++){
      var rowArray = dataValues[i];
      for (var j=0;j<rowArray.length;j++){
        var columnValue = rowArray[j];
      }
    }  
    
  • 足够的理论。回到我们的需要,我们关心包含工作表名称的第一列。也就是说,如果
    j
    0
    ,我们需要它的数据。这意味着:

    if (j===0) {
      // we are at first column
      // let's check if the value is our sheetName:
    
      if (columnValue === sheetName){
        // if we got here, means we have the needed row. 
        var rowNumber = i + 1; // remember that in array, i being 0 meneans row one
        Logger.log(rowNumber);
    
        // now you can do whatever you want to this number.
      }
    }
    
    或者,另一种方法(我推荐这种方法,因为使用同一行中的其他列值更容易:

    if (rowArray[0] === sheetName){
      // We're at the right row 
      var rowNumber = i+1;
    
      // Do something with columnValue
    
    }
    
  • 就这样。下面是全部代码:

    function myFunction() {
      var ss = SpreadsheetApp.openById("1lqLHXt15SKamuGTnIjQoAAiWuuxEJOUcY1ZdamxCk_0");
      var allMySheets = ss.getSheets();
      allMySheets[0].getRange(1, 1, allMySheets[0].getLastRow(), allMySheets[0].getLastColumn()).getValues()
      allMySheets.forEach(function(sheet){
        var sheetName = sheet.getName();
        var dataRange = sheet.getDataRange();
        var dataValues = dataRange.getValues();
        for (var i=0;i<dataValues.length;i++){
          var rowArray = dataValues[i];
          for (var j=0;j<rowArray.length;j++){
            var columnValue = rowArray[j];
    
            if (rowArray[0] === sheetName){
              // We're at the right row 
              var rowNumber = i+1;
              Logger.log("Row number: %s, sheet name: %s, column value: %s", rowNumber, sheetName, columnValue);
              // Do something with columnValue
    
            }
    
          }
        }
      })
    }
    
    函数myFunction(){
    var ss=SpreadsheetApp.openById(“1LQLHXT15SKAMUGTNIJQOAAIWuuuxejoucy1ZDAMxCk_0”);
    var allMySheets=ss.getSheets();
    allMySheets[0]。getRange(1,1,allMySheets[0]。getLastRow(),allMySheets[0]。getLastColumn())。getValues()
    allMySheets.forEach(函数(表){
    var sheetName=sheet.getName();
    var dataRange=sheet.getDataRange();
    var dataValues=dataRange.getValues();
    
    对于(var i=0;i)到目前为止,您尝试了什么?向我们展示您的javascript代码完成后,我将我的代码放入已尝试的代码中。
    if (rowArray[0] === sheetName){
      // We're at the right row 
      var rowNumber = i+1;
    
      // Do something with columnValue
    
    }
    
    function myFunction() {
      var ss = SpreadsheetApp.openById("1lqLHXt15SKamuGTnIjQoAAiWuuxEJOUcY1ZdamxCk_0");
      var allMySheets = ss.getSheets();
      allMySheets[0].getRange(1, 1, allMySheets[0].getLastRow(), allMySheets[0].getLastColumn()).getValues()
      allMySheets.forEach(function(sheet){
        var sheetName = sheet.getName();
        var dataRange = sheet.getDataRange();
        var dataValues = dataRange.getValues();
        for (var i=0;i<dataValues.length;i++){
          var rowArray = dataValues[i];
          for (var j=0;j<rowArray.length;j++){
            var columnValue = rowArray[j];
    
            if (rowArray[0] === sheetName){
              // We're at the right row 
              var rowNumber = i+1;
              Logger.log("Row number: %s, sheet name: %s, column value: %s", rowNumber, sheetName, columnValue);
              // Do something with columnValue
    
            }
    
          }
        }
      })
    }