【发布时间】:2021-03-03 23:53:41
【问题描述】:
背景
我正在构建一个包含各种经济指标的大型电子表格,由于 Google 财务功能中缺少商品价格,我必须使用 importHTML 从商业内幕人士的一系列表格中获取数据。但是,我不希望 importHTML 函数经常自动刷新,因为我不希望它在不需要时在后台运行。每当我单击复选框时,我一直试图让它刷新数据,并且脚本会自动取消选中该复选框。
我想构建一个功能,通过复制单元格的内容,删除内容,然后将内容重新粘贴到同一单元格中来刷新导入命令。 (或通过任何其他更简单的命令系列)因此,在谷歌表格中,公式看起来像这样:
=RefreshImport(input1, input2, input3, inputx)
=RefreshImport(B3, C3, D3)
底部是它的外观示例。 input1 之后的所有输入都是可选的。因此,目标是能够将其放入电子表格中的 IF 语句中,并“刷新”输入单元格的内容。
当前脚本
由于我是 javascript 新手,所以我求助于宏来试图弄清楚,但我希望有一个依赖于复选框的 IF 语句。
function RefreshCheckmark() {
var spreadsheet = SpreadsheetApp.getActive();
spreadsheet.getRange('Q6').activate();
spreadsheet.getActiveRangeList().clear({contentsOnly: true, skipFilteredRows: true});
spreadsheet.getActiveRange().setFormula('=importhtml("https://markets.businessinsider.com/commodities", "table", 2)');
spreadsheet.getRange('Q12').activate();
spreadsheet.getActiveRangeList().clear({contentsOnly: true, skipFilteredRows: true});
spreadsheet.getActiveRange().setFormula('=importhtml("https://markets.businessinsider.com/commodities", "table", 3)');
spreadsheet.getRange('Q21').activate();
spreadsheet.getActiveRangeList().clear({contentsOnly: true, skipFilteredRows: true});
spreadsheet.getActiveRange().setFormula('=importhtml("https://markets.businessinsider.com/commodities", "table", 4)');
spreadsheet.getRange('Q29').activate();
spreadsheet.getActiveRangeList().clear({contentsOnly: true, skipFilteredRows: true});
spreadsheet.getActiveRange().setFormula('=importhtml("https://markets.businessinsider.com/commodities", "table", 5)');
spreadsheet.getRange('Y4').activate();
spreadsheet.getCurrentCell().setValue('FALSE');
};
使用此宏,我尝试在实际工作表中创建一个 IF 语句,但由于没有权限,因此无法正常工作。 (即使我允许它)这是我尝试在工作表中使用的 IF 语句:(Y4 是带有复选框的单元格)
=IF(Y4 = TRUE, RefreshCheckmark(), "刷新脚本")
所以,现在我很难将宏转换为我在背景部分中描述的函数。我整天都在搞砸它,我的想法已经用完了。
【问题讨论】:
标签: google-apps-script google-sheets import