You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于URL参数在Google Apps Script/Web App中返回指定行表格数据

解决Google Apps Script根据URL参数获取对应行数据的问题

要实现通过URL中的formid参数指定Google Sheets的行数据,需要修改服务器端脚本获取参数并转换为有效整数,同时调整数据获取逻辑。以下是完整修改方案:

1. 修改Code.gs文件

调整doGet函数获取并验证URL参数

该函数负责接收URL中的formid参数,转换为整数并做有效性校验,再将有效行号传递给HTML模板:

function doGet(e) {
  // 获取URL中的formid参数,转换为整数,默认值设为1(可按需调整)
  const formid = e.parameters.formid ? parseInt(e.parameters.formid[0]) : 1;
  // 验证是否为有效正整数,避免非法参数
  const validRow = Number.isInteger(formid) && formid >= 1 ? formid : 1;
  
  const template = HtmlService.createTemplateFromFile('Index');
  // 将有效行号传入模板
  template.rowNumber = validRow;
  return template.evaluate();
}

修改getBody函数接收行号参数

让getBody接收行号参数,同时增加行号范围校验,防止超出表格实际行数:

function getBody(rowNumber) {
  var url = "https://docs.google.com/spreadsheets/d/1NnG5lEKowlU6i2ZzkyCD1bjFtFGcgaODKZxvG179XfM/"; 
  const sheet = SpreadsheetApp.openByUrl(url).getSheetByName("Sheet1");
  // 获取表格最后一行,确保目标行不超出范围
  const maxRow = sheet.getLastRow();
  const targetRow = rowNumber <= maxRow ? rowNumber : maxRow;
  const numRows = 1;
  return sheet.getRange(targetRow, 1, numRows, sheet.getLastColumn()).getDisplayValues();
}

getHeaders函数保持不变即可。

2. 修改Index.html文件

在HTML模板中,将服务器端传递的rowNumber参数传入getBody函数,替换原来的硬编码调用:

<!DOCTYPE html>
<html>
<head>
</head>
<style>
</style>
<body>
<form>
  <h1><center>Sheet</center></h1>
</form>

<div>
  <table>
    <thead>
      <? const headers = getHeaders();
      for (let i = 0; i < headers.length; i++) { ?>
        <tr>
          <? for (let j = 0; j < headers[0].length; j++) { ?>
          <th><?= headers[i][j] ?></th>
          <? } ?>
      <? } ?>
    </thead>      
    <tbody>
      <!-- 将rowNumber参数传入getBody函数 -->
      <? const body = getBody(rowNumber); 
      for (let k = 0; k < body.length; k++) { ?>
        <tr>
          <? for (let l = 0; l < body[0].length; l++) { ?>
          <td><?= body[k][l] ?></td>
          <? } ?>
      <? } ?>     
    </tbody> 
  </table>
</div>

</body>
</html>

关键说明

  • 之前出现“formid不是整数”错误的原因:URL参数默认是字符串类型,直接传入getRange会导致类型不匹配,必须用parseInt转换为整数。
  • 增加有效性校验:确保参数是正整数,且不超出表格实际行数,避免非法请求导致脚本报错。
  • 原HTML中的google.script.url.getLocation代码可以删除,因为参数已经在服务器端处理完成,无需客户端再获取。

内容的提问来源于stack exchange,提问作者Stuart

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 07:20:33