【问题标题】:Google App Script return each column two dimensional array with urlGoogle App Script返回每列带有url的二维数组
【发布时间】:2020-04-30 09:54:46
【问题描述】:

我是 GAS 新手,我正在尝试创建一个显示可搜索人员列表的应用,单击唯一 ID 号并打开另一个页面以更新数据。我使用不同的方法使搜索工作,但只会将数据返回到日志而不是正确地返回到 html 表。昨晚我偶然发现了this post,我认为它可以让我创建链接,但我不知道如何使用多维数组独立显示每一列。下面的代码吐出整行,但我需要将第一列链接到一个 url,该 url 会根据第一列中的数据对每一行进行更改。我想我会尝试用计算的链接创建一个新列,如果我抓住那个列,它会起作用,但没有骰子(这就是我拉 J 而不是 A 的原因)。所以 row1 的第一列是 mylink.com?id=36,row2 是 mylink.com?id=400,等等。

所以总的来说我有 3 个问题,如果 2 和 3 结合起来,我可以接受。

  1. 过滤/搜索多个列(使用通配符?)返回结果。
  2. 每列独立显示多维数组(主要做#3)。
  3. 获取第一列中的 id,并根据第一列中的 id 创建一个可点击的 url。

code.gs

function getData()
{

  var targetRange = 'SearchList!A:J';
  var SQL = 'select J, B, C, D where J is not null';
  var Query = '=QUERY('+targetRange+',\"'+SQL+'\")';
  Logger.log(Query);

  var currentDoc = SpreadsheetApp.openByUrl(url);
  var tempSheet = currentDoc.insertSheet();

  var pushQuery = tempSheet.getRange(1, 1).setFormula(Query);
  var pullResult = tempSheet.getDataRange().getValues();
  Logger.log(pullResult);
  currentDoc.deleteSheet(tempSheet);  

  return pullResult;
}

html

<table class="table table-striped table-bordered table-hover">
          <thead>
            <td>Scripta ID</td>
            <td>Last Name</td>
            <td>First Name</td>
            <td>Birth Date</td>
          </thead>        
          <tbody id="table-body">            

<?     var data = getData(); 
       for (var i = 0; i < data.length; i++) 
       { 
?>
        <tr>
<?         for (var j = 0; j < data[i].length; j++) 
          { 
            Logger.log(data[i][j]);

?>
            <td><a href="<?= ScriptApp.getService().getUrl(); ?>?f=member&sid="&<?= data[i][j] ?>><?= data[i][j] ?></a></td>
<?        } 
?>
        </tr>
<?    } 
?>

        </tbody>
</table>

【问题讨论】:

    标签: arrays google-apps-script


    【解决方案1】:

    仅获取 A 列:

    function getOne() {
      var ss=SpreadsheetApp.getActive();
      var sh=ss.getSheetByName('Sheet1');
      var vs=sh.getRange(1,1,sh.getLastRow(),1).getValues();
      vs.forEach(function(r,i){
        //r[0] is columnA for each row
      });
      //or
      for(var i=0;i<vs.length;i++) {
        //vs[i][0] is column A for each row
      }
    }
    

    Sheet.getRange(row, col, numrows, numcols)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-05-28
      • 2013-12-20
      • 1970-01-01
      • 2015-01-19
      • 2021-12-08
      • 2014-03-04
      • 2021-12-26
      相关资源
      最近更新 更多