【问题标题】:Javascript on Google Sheets - Get Column Number from Prompt InputGoogle 表格上的 Javascript - 从提示输入中获取列号
【发布时间】:2015-06-10 00:57:49
【问题描述】:

我在 Google 电子表格上有两张表格。一个有很多信息和引用,另一个在列的第一个单元格中具有相同的引用,下面有链接名称和链接。我试图通过让用户输入他们想要搜索的引用然后搜索第二张表以找到引用并有一个带有链接的弹出框来解决“一个单元格中没有多重超链接”的限制。

到目前为止,我能够从第二个电子表格列中获取链接,并使用以下代码在弹出框中显示它们:

    function main(){
      var column = SearchAndFind()
      showURL(getLinks(column))
    }

    function getLinks(col){
      var ss = SpreadsheetApp.getActiveSpreadsheet();
      var sh = ss.setActiveSheet(ss.getSheets()[1]);
      var cell = ss.getActiveCell();
      var values = sh.getDataRange().getValues();
      var myArray = []

      for(n=1;n<values.length;++n){
        var cell = values[n][col] ; 
        myArray.push(cell);
      }
      return myArray;
    }

    function showURL(data){ 
      var app = UiApp.createApplication().setHeight(40+8*data.length).setWidth(200);
      app.setTitle("Show URLs");
      var panel = app.createVerticalPanel();
      app.add(panel);
      for(var d=0 ; d<data.length;d=d+2){
      var link = app.createAnchor(data[d],data[(d+1)]);
      panel.add(link);
      }
      var doc = SpreadsheetApp.getActiveSpreadsheet();
      doc.show(app);
      return;
      }

当我将随机列号硬编码到 getLinks 函数并且它工作正常时,我需要能够从用户搜索第二张表中每列中的第一个单元格中获取列号。

这是我现在无法使用的代码:

//I know that it will always be the second sheet on the spreadsheet
//Search the column headers on the second sheet
//When one matches, return the index
function SearchAndFind(){
      //Make the 2nd sheet active
      var ss = SpreadsheetApp.getActiveSpreadsheet();
      var sh = ss.setActiveSheet(ss.getSheets()[1]);
      var range = sh.getRange(1, 1, sh.getMaxRows(), 1);
      var values = range.getValues();
      //Get the user input for the text they want to search
      var ui = SpreadsheetApp.getUi();
      var search = ui.prompt('Enter the ID: ');
      var searchString = search.getResponseText()

      //for loop to iterate through the first row and find the matching cell
      //return the index of that column
      for (n = 0; n < values[0].length; n++){
        var cell = values[0][n]
        if (cell === searchString){
          return n;
        }
      }
    }

当我运行所有代码(包括不起作用的函数SearchAndFind)时,弹出框出现undefined,无处链接。诚然,我对 Javascript 没有太多经验,所以我认为我对它的理解还不够好,无法在这里找到错误。

【问题讨论】:

    标签: google-apps-script google-sheets


    【解决方案1】:

    您只拉一列,然后检查列中的匹配项。

    var range = sh.getRange(1, 1, sh.getMaxRows(), 1);
    

    只给你第一列。和

    for (n = 0; n < values[0].length; n++){
    

    浏览这些列。所以你的 values[0].length1,你的循环只运行一次。

    您是要遍历第一列的所有行,还是遍历所有列的第一行。

    您还应该将循环更改为

    for (var n = 0; n < values[0].length; n++){
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-02-05
      • 1970-01-01
      • 2019-02-26
      • 2020-07-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多