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

Google Script与Google Sheets侧边栏下拉匹配单元格添加数值求助

实现方案

一、修改 Google Apps Script 代码

替换你现有的gs文件内容为以下代码:

function ftball() {
  try {
    var output = HtmlService.createHtmlOutputFromFile('HTML_Sidebar');
    SpreadsheetApp.getUi().showSidebar(output);
  } catch(err) {
    Logger.log(err);
  }
}

// 获取球员姓名列表
function getNames() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Football");
  // 如果球员姓名从第二行开始(第一行A列是表头),把下方的1改成2即可
  return sheet.getRange(1, 1, sheet.getLastRow(), 1).getValues().flat();
}

// 获取统计类型列表(从第一行表头拉取)
function getStatTypes() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Football");
  return sheet.getRange(1, 2, 1, sheet.getLastColumn()-1).getValues().flat();
}

// 累加数值到目标单元格
function enterValue(playerName, statType, inputNumber) {
  var ss = SpreadsheetApp.getActive();
  var sheet = ss.getSheetByName("Football");
  var allNames = getNames();
  var allStats = getStatTypes();
  
  // 匹配球员对应行号
  var rowIndex = allNames.indexOf(playerName) + 1;
  // 匹配统计项对应列号,跳过A列所以+2
  var colIndex = allStats.indexOf(statType) + 2;
  
  if (rowIndex < 1 || colIndex < 2) return; // 匹配失败直接返回
  // 读取原有数值,空值默认0
  var originValue = Number(sheet.getRange(rowIndex, colIndex).getValue() || 0);
  var addValue = Number(inputNumber || 0);
  // 累加后写入
  sheet.getRange(rowIndex, colIndex).setValue(originValue + addValue);
}

二、修改侧边栏HTML代码

替换你现有HTML文件内容为以下代码:

<!DOCTYPE html>
<html>
<head>
  <base target="_top">
</head>
<body>
  <!-- 球员选择下拉 -->
  <label>选择球员:</label>
  <select id="playerSelect"></select>
  <br><br>
  <!-- 统计类型选择下拉 -->
  <label>选择统计类型:</label>
  <select id="statSelect"></select>
  <br><br>
  <!-- 数值输入框 -->
  <label>输入数值:</label>
  <input type="number" id="numberInput" min="0" value="1">
  <br><br>
  <!-- 提交按钮 -->
  <button onclick="sendValue()">确认录入</button>

  <script>
    // 加载球员列表到下拉框
    function loadPlayerNames(names) {
      var select = document.getElementById("playerSelect");
      names.forEach(name => {
        var option = document.createElement("option");
        option.text = name;
        select.add(option);
      });
    }
    // 加载统计类型到下拉框
    function loadStatTypes(stats) {
      var select = document.getElementById("statSelect");
      stats.forEach(stat => {
        var option = document.createElement("option");
        option.text = stat;
        select.add(option);
      });
    }
    // 页面加载完成后拉取两个下拉的选项
    window.onload = function() {
      google.script.run.withSuccessHandler(loadPlayerNames).getNames();
      google.script.run.withSuccessHandler(loadStatTypes).getStatTypes();
    }
    // 提交数据到后台
    function sendValue(){
      var selectedPlayer = document.getElementById("playerSelect").value;
      var selectedStat = document.getElementById("statSelect").value;
      var inputNum = document.getElementById("numberInput").value;
      google.script.run.enterValue(selectedPlayer, selectedStat, inputNum);
      // 录入后默认重置为1,方便快速高频录入
      document.getElementById("numberInput").value = 1;
    }
  </script>
</body>
</html>

三、使用注意事项

  • 请确保你的Football工作表结构符合要求:第一列为球员姓名,第一行表头为统计类型名称(冲球、传球等),不要在A列和第一行插入无关内容
  • 录入数值支持正负值,也可以直接修改输入框的默认值适配常用录入场景

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.14 17:36:14