如何实现Google Sheets数据表数据回读至Input表以修改现有数据?
需求可行性与实现方案
完全可行,只需基于现有脚本的匹配逻辑反向操作,就能将数据表中对应行的数据回写到Input表的指定区域,方便后续修改。
现有脚本逻辑回顾
你的现有脚本通过Barcode单元格的值在NIEUW Invoerbestand的A列匹配对应行,随后将Input表E4:E241的单列多行数据,转换为单行多列格式写入匹配行的第6列开始区域,最后清空Input表内容。
回读功能实现代码
以下是实现数据回读的脚本,可直接添加到你的项目中:
function readDataBackToInput() { const ss = SpreadsheetApp.getActive(); const dataSheet = ss.getSheetByName('NIEUW Invoerbestand'); const inputSheet = ss.getSheetByName('Input'); const idCell = ss.getRangeByName('Barcode'); const id = idCell.getValue(); // 校验Barcode是否为空 if (!id) { SpreadsheetApp.getUi().alert('请先输入Barcode值'); return; } // 在数据表中匹配对应行 const cellFound = dataSheet.getRange('A:A') .createTextFinder(id) .matchCase(true) .matchEntireCell(true) .findNext(); if (!cellFound) { SpreadsheetApp.getUi().alert('未找到对应Barcode的数据'); return; } // 读取数据表中匹配行的第6列到第6+237列(对应Input的E4:E241共238行) const dataRange = dataSheet.getRange(cellFound.getRow(), 6, 1, 238); const dataValues = dataRange.getValues()[0]; // 将单行多列数据转置为单列多行的二维数组,适配Input表的E列格式 const transposedValues = dataValues.map(value => [value]); // 写入Input表的指定区域 inputSheet.getRange('E4:E241').setValues(transposedValues); }
关键说明
- 先校验
Barcode是否为空,避免无效操作; - 匹配到对应行后,读取该行从第6列开始的238列数据,与Input表E4到E241的行数对应;
- 通过
map方法将单行数组转置为单列多行的二维数组,确保数据格式与Input表区域匹配; - 回读后保留
Barcode的值,方便后续修改完成后直接使用原有写入脚本更新数据。
内容的提问来源于stack exchange,提问作者CeePee98
相关产品推荐
相关产品推荐

