Google Apps Script单元格含Refresh时触发setValue功能失效求助
问题原因
- 你操作的是D3单个单元格,调用
getValues()返回的是1行1列的二维数组,冗余的for循环逻辑不仅没必要,当单元格为空、或值为非字符串类型时,调用match()方法会直接报错,导致判断逻辑不生效 match()属于正则匹配,当下拉选项的「Refresh」存在前后空格、大小写差异时,都会出现匹配失败的情况- 代码中重复获取
News_raw工作表,属于冗余逻辑
修复后可运行代码
function myRecalculate(){ var ss = SpreadsheetApp.openById("------"); var sheet = ss.getSheetByName("News_raw"); // 单个单元格直接用getValue获取值,不用处理二维数组 var cellValue = sheet.getRange('D3').getValue(); // 先判断值为字符串,再做匹配,trim去除前后空格、转小写适配格式差异 if (typeof cellValue === 'string' && cellValue.trim().toLowerCase().includes('refresh')) { sheet.getRange('C1').setValue('https://finviz.com/quote.ashx?t='); } }
额外说明
如果你需要实现选择Refresh后自动触发执行,不需要手动运行函数,还需要给当前表格安装onEdit触发器:
- 进入Apps Script编辑页,点击左侧「触发器」菜单
- 点击「添加触发器」,选择要触发的函数为
myRecalculate,事件源选择「电子表格」,事件类型选择「编辑」,保存即可
内容的提问来源于stack exchange,提问作者Antor Cha
相关产品推荐
相关产品推荐

