Google Sheets如何将B列数值仅粘贴到A列空白单元格并转为文本
Google Sheets 车辆位置历史留存解决方案
步骤1:添加执行脚本
打开你要设置的表格,依次点击顶部菜单栏「扩展程序 > Apps Script」,清空编辑器内默认代码,粘贴以下内容:
function copyBtoAIfAIsEmpty() { // 获取当前激活的工作表,如果你要指定特定工作表可替换为.getSheetByName("工作表名称") const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); const lastRow = sheet.getLastRow(); // 跳过第一行表头,无表头可将startRow修改为1 const startRow = 2; if (lastRow < startRow) return; // 批量读取A、B两列的所有数据,减少接口调用提升运行效率 const dataRange = sheet.getRange(startRow, 1, lastRow - startRow + 1, 2); const values = dataRange.getValues(); const updatedValues = values.map(row => { // A列为空时用B列值填充A列,否则保留A列原有历史值 if (row[0] === "" || row[0] == null) { return [row[1], row[1]]; } return row; }); // 批量写入更新后的数据 dataRange.setValues(updatedValues); // 将A列所有单元格设置为纯文本格式 sheet.getRange(startRow, 1, lastRow - startRow + 1, 1).setNumberFormat("@"); }
点击编辑器顶部的保存按钮,自定义项目名称后完成保存。首次运行时按照页面提示完成授权即可。
步骤2:配置每小时定时触发规则
- 点击Apps Script页面左侧菜单栏的「触发器」选项
- 点击页面右下角的「添加触发器」按钮
- 选择要运行的函数为
copyBtoAIfAIsEmpty,事件源选择「时间驱动」,触发器类型选择「小时计时器」,时间间隔设置为「每1小时」 - 点击保存即可完成配置
注意事项
- 如需指定特定工作表运行,可将代码中
getActiveSheet()替换为getSheetByName("你的工作表名称") - 若目标存储列不是A列、数据源列不是B列,可修改代码中对应的列序号(A列对应1、B列对应2,以此类推)
- 若无需跳过表头,将代码中
startRow的数值修改为1即可
内容的提问来源于stack exchange,提问作者Marcus Catan
相关产品推荐
相关产品推荐

