大家好,我正在尝试使用 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);
});
}
有人知道如何解决这个问题吗?