如何使用Google Apps Script在Google Sheets中设置特定单元格值及实现城市代码自动填充
我来帮你一步步搞定这两个Google Apps Script相关的问题:
1. 如何用Google Apps Script给Google Sheets特定单元格设置值?
核心就是利用Range.setValue()(单个单元格)或Range.setValues()(批量单元格)方法,我给你几个实用的示例:
单个单元格赋值
比如要把A1单元格设为"测试内容":
function setSingleCellValue() { // 获取当前打开的表格 const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); // 定位到A1单元格 const targetCell = sheet.getRange("A1"); // 设置单元格值 targetCell.setValue("测试内容"); }
批量设置多单元格值
如果要一次性给A1:B2区域赋值,用setValues()效率更高(参数是对应行列的二维数组):
function setMultipleCellsValue() { const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); const targetRange = sheet.getRange("A1:B2"); // 二维数组结构:每一个子数组对应一行,子数组里的元素对应列 const values = [ ["城市名称", "代码"], ["纽约", "NY"] ]; targetRange.setValues(values); }
用行号列号定位单元格
除了用"A1"这种地址,还可以直接用行号+列号定位,比如定位第2行第3列(也就是C2单元格):
const targetCell = sheet.getRange(2, 3); targetCell.setValue("TK");
2. 选中/编辑A列城市名时自动填充对应代码到B列
这个需求可以用onEdit简单触发器实现,它会在表格被编辑时自动触发,具体步骤如下:
第一步:定义城市-代码映射表
先在脚本里把你的城市和对应代码对应起来,比如:
// 这里可以根据你的业务需求添加更多城市和代码 const cityCodeMap = { "纽约": "NY", "东京": "TK", "德里": "DL", };
第二步:编写自动填充的触发函数
把下面的代码粘贴到Google Sheets的脚本编辑器中:
function onEdit(e) { // 获取编辑事件的基础信息 const editedRange = e.range; const editedSheet = editedRange.getSheet(); const editedColumn = editedRange.getColumn(); const editedRow = editedRange.getRow(); // 只处理A列(第1列)的编辑,且跳过表头行(假设表头在第1行) if (editedColumn === 1 && editedRow > 1) { const cityName = editedRange.getValue().trim(); // 去除城市名首尾空格,避免匹配错误 const codeCell = editedSheet.getRange(editedRow, 2); // 对应行的B列(第2列) // 根据城市名匹配代码,没有匹配项就清空B列 if (cityCodeMap[cityName]) { codeCell.setValue(cityCodeMap[cityName]); } else { codeCell.clearContent(); } } }
第三步:设置和测试
- 打开你的Google Sheets,点击顶部菜单栏的「扩展程序」→「Apps Script」,进入脚本编辑器
- 把默认的
myFunction()替换成上面的代码,补充完整cityCodeMap里的城市和代码 - 点击保存,给脚本起个名字(比如"AutoFillCityCode"),首次运行会要求授权,按照提示完成即可
- 回到表格,在A列第2行及以下输入你定义好的城市名,对应的B列就会自动填充代码啦!
小提示
- 如果你的表头不在第1行,记得把
editedRow > 1改成对应的行号(比如表头在第2行就改成editedRow > 2) - 要是需要忽略大小写匹配,可以把
cityName转成小写,同时把映射表的键也改成小写,比如cityName.toLowerCase()
内容的提问来源于stack exchange,提问作者John
相关产品推荐
相关产品推荐

