Google Apps Script变量无法读取Google Sheets单元格更新值的技术求助
解决Google Apps Script读取Google Sheets单元格旧值的问题
问题根源在于Google Apps Script会对电子表格数据进行缓存,修改单元格后立即运行脚本时,getValue()可能读取缓存中的旧值而非最新内容。
解决方案
在获取单元格数据前,调用SpreadsheetApp.flush()强制刷新缓存,确保脚本读取到最新的单元格值。
修改后的代码
function Search() { var SS = SpreadsheetApp.getActiveSpreadsheet(); // 强制刷新缓存,同步最新的表格数据 SpreadsheetApp.flush(); var ShtRecords = SS.getSheetByName("Records"); var ShtForm = SS.getSheetByName("Form"); var records = ShtRecords.getDataRange().getValues(); var sField = ShtForm.getRange("A2").getValue(); var sValue = ShtForm.getRange("A6").getValue(); var SCol = records[0].lastIndexOf(sField); Logger.log(sValue); var Results = records.filter(function(e){return sValue == e[SCol]}); if (Results.length == 0) { SpreadsheetApp.getUi().alert("value not found"); } else { ShtForm.getRange(2,3,Results.length,Results[0].length).setValues(Results); } }
原理说明
SpreadsheetApp.flush()会立即执行所有待处理的电子表格操作(包括单元格修改),并清除本地缓存,让后续的getValue()等数据读取操作直接从最新的表格数据中获取内容,避免缓存导致的旧值问题。
内容的提问来源于stack exchange,提问作者ictd_Bel
相关产品推荐
相关产品推荐

