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

如何在Google Apps Script中配置侧边栏实现按输入ID读写Sheet数据

功能实现修改方案

1. 谷歌脚本(GS)端完整代码

var SHEET = SpreadsheetApp.getActiveSheet();

function showSidebar() {
  var ui = SpreadsheetApp.getUi();
  var tmp = HtmlService.createTemplateFromFile('index');
  tmp.initialValue = initialValue();
  var html = tmp.evaluate();
  html.setTitle('Gestion des demandes')
  ui.showSidebar(html);
}

function initialValue(){
  return SHEET.getRange(2,1).getValue();
}

// 新增:根据ID查找对应行号
function getRowById(id) {
  var allIds = SHEET.getRange('A:A').getValues().flat();
  // 跳过表头行(第一行)
  for (var i = 1; i < allIds.length; i++) {
    if (allIds[i].toString() === id.toString()) {
      return i + 1; // 数组索引从0开始,表格行号从1开始,所以+1
    }
  }
  return null;
}

// 新增:根据ID批量获取对应行的所有字段
function getDataById(id) {
  var targetRow = getRowById(id);
  if (!targetRow) return { error: '未找到匹配ID的记录' };
  return {
    secteur: SHEET.getRange(targetRow, 2).getValue(),
    zone: SHEET.getRange(targetRow, 3).getValue(),
    salle: SHEET.getRange(targetRow, 4).getValue()
  };
}

// 修改:支持根据ID定位行写入数据
function setValue(id, inputValue) {
  var targetRow = getRowById(id);
  if (!targetRow) return { error: '未找到匹配ID的记录' };
  SHEET.getRange(targetRow, 5).setValue(inputValue);
  return { success: true };
}

2. HTML端完整代码

<body>
<h1 style="font-size:16px;text-align:center">Interface administrateur</h1>
<br>
<label for="input-box">Quel Id ?</label>
<input id="input-box" type="text">
<br>
<br>
<label for="secteur">Secteur :</label>
<input id="secteur" type="text">
<br>
<br>
<label for="zone">Zone :</label>
<input id="zone" type="text">
<br>
<br>
<label for="salle">Salle :</label>
<input id="salle" type="text">
<br>
<br>
<button id="get-value">Get value</button>
<br>
<br>
<label for="set-input">Quelle donnée à reporter </label>
<input id="set-input" type="text">
<br>
<br>
<button id="set-value">Set value</button>
<br>
<br>
<button onclick="google.script.host.close()">Close</button>

<script>
  var initVal = <?= initialValue ?>;
  document.getElementById('input-box').value = initVal;

  document.getElementById('get-value').addEventListener('click',function(){
    var inputId = document.getElementById('input-box').value.trim();
    if (!inputId) {
      alert('请输入要查询的ID');
      return;
    }
    google.script.run.withSuccessHandler(function(res){
      if (res.error) {
        alert(res.error);
        return;
      }
      document.getElementById('secteur').value = res.secteur;
      document.getElementById('zone').value = res.zone;
      document.getElementById('salle').value = res.salle;
    }).getDataById(inputId);
  });

  document.getElementById('set-value').addEventListener('click',function(){
    var inputId = document.getElementById('input-box').value.trim();
    var inputValue = document.getElementById('set-input').value.trim();
    if (!inputId) {
      alert('请先输入要写入的目标ID');
      return;
    }
    google.script.run.withSuccessHandler(function(res){
      if (res.error) {
        alert(res.error);
        return;
      }
      alert('数据写入成功');
      document.getElementById('set-input').value = '';
    }).setValue(inputId, inputValue);
  });

</script>
</body>

核心改动说明

  • GS端新增了ID匹配行号的逻辑,无需固定行号读写
  • 合并了原来分散的单字段查询接口,减少前端请求次数
  • 新增了ID不存在的提示逻辑,避免无响应问题
  • 读写操作均绑定输入的ID,自动定位到对应行执行操作

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 05:39:02