大家好,我正在尝试使用 Google 电子表格公式来接收加密价格,将公式放入 Google 电子表格中效果很好,而且我得到的价格没有任何问题。
=IMPORTXML("https://www.marketscreener.com/quote/cryptocurrency/BITCOIN-EURO-45553925/";"//td[@class='fvPrice colorBlack']")
问题:像 IMPORTXML 这样的自定义公式不会在电子表格中自动更新,所以我从谷歌那里获取了执行此任务的所有方法,但没有一个有效。直到我找到一个部分有效的方法,它才能完成工作,但不幸的是删除了我的公式周围的单元格。
这是我在运行方法 Before
之前的电子表格这是我运行 After 方法后的电子表格
这是部分有效的方法:
/**
* Get all sheet names from active spreadsheet
*/
function sheetNames() {
var sheetNames = [];
var sheets = Spreadsheetapp.getactiveSpreadsheet().getSheets();
for (var i = 0; i < sheets.length; i++) sheetNames.push( sheets[i].getName() )
return sheetNames;
}
/**
* Update all formula data in cell range
*/
function updateData() {
var spreadsheet = Spreadsheetapp.getactiveSpreadsheet(),activeSheet = spreadsheet.getactiveSheet()
activeSheetName = activeSheet.getSheetName(),activeRange = activeSheet.getactiveRange(),sheets = sheetNames() // OR define an array of sheet names: ['Sheet1','Sheet2'],// cellRange = (activeRange.getvalues().length > 1) ? activeRange.geta1Notation() : Browser.inputBox('Enter your range'),range = '';
// loop through all sheets
sheets.forEach(function(sheet) {
var originalFormulas = [],range = activeRange,defaultRanges = {
'europelist': 'A1:F9','europelist': 'A1:F9'
},// set cell range if entered,ortherwise fall back to default
cellRange = defaultRanges[sheet];
// set range to active range,otherwise fall back to defined cell range
range = spreadsheet.getSheetByName(sheet).getRange(cellRange);
originalFormulas = range.getFormulas();
// modify formulas
const modified = originalFormulas.map(function (row) {
return row.map(function (col) {
return col.replace('=','?');
});
});
// update formulas
range.setformulas(modified);
Spreadsheetapp.flush();
// return formulas to original
range.setformulas(originalFormulas);
});
}
有人知道如何解决这个问题吗?