我将通过API将一些加密价格数据放入五个不同的Google工作表中,然后将所有这些信息合并为一个。问题是API有时会失败,并返回一个错误代码。
当发生这种情况时,我希望宏避免从该工作表中带来信息。
我检查工作表上的信息是否正确的方法是比较工作表上的单元格,例如,如果工作表上的单元格B6不等于文本"head",宏可以继续。
到目前为止,这是我的代码,我只需要添加IF语句,但我总是失败……
API-MARKETS是统一表,API-1...API-5是五个单独的表。
function Consolidar_API() {
var spreadsheet = SpreadsheetApp.getActive();
// API1
spreadsheet.setActiveSheet(spreadsheet.getSheetByName('API-MARKETS'), true);
spreadsheet.getRange('A2').activate();
spreadsheet.getRange('\'API-1\'!A2:AD251').copyTo(spreadsheet.getActiveRange(),
SpreadsheetApp.CopyPasteType.PASTE_NORMAL, false);
// API2
spreadsheet.setActiveSheet(spreadsheet.getSheetByName('API-MARKETS'), true);
spreadsheet.getRange('A252').activate();
spreadsheet.getRange('\'API-2\'!A2:AD251').copyTo(spreadsheet.getActiveRange(),
SpreadsheetApp.CopyPasteType.PASTE_NORMAL, false);
// API3
spreadsheet.setActiveSheet(spreadsheet.getSheetByName('API-MARKETS'), true);
spreadsheet.getRange('A502').activate();
spreadsheet.getRange('\'API-3\'!A2:AD251').copyTo(spreadsheet.getActiveRange(),
SpreadsheetApp.CopyPasteType.PASTE_NORMAL, false);
// API4
spreadsheet.setActiveSheet(spreadsheet.getSheetByName('API-MARKETS'), true);
spreadsheet.getRange('A752').activate();
spreadsheet.getRange('\'API-4\'!A2:AD251').copyTo(spreadsheet.getActiveRange(),
SpreadsheetApp.CopyPasteType.PASTE_NORMAL, false);
// API5
spreadsheet.setActiveSheet(spreadsheet.getSheetByName('API-MARKETS'), true);
spreadsheet.getRange('A1002').activate();
spreadsheet.getRange('\'API-5\'!A2:AD251').copyTo(spreadsheet.getActiveRange(),
SpreadsheetApp.CopyPasteType.PASTE_NORMAL, false);
spreadsheet.setActiveSheet(spreadsheet.getSheetByName('Portfolio'), true);
};谢谢。
发布于 2021-08-10 16:35:56
尝试使用:
function Consolidar_API() {
const meta = [
{ sheet: 'API-1', range: 'A2' },
{ sheet: 'API-2', range: 'A252' },
{ sheet: 'API-3', range: 'A502' },
{ sheet: 'API-4', range: 'A752' },
{ sheet: 'API-5', range: 'A1002' },
]
spreadsheet.setActiveSheet(spreadsheet.getSheetByName('API-MARKETS'), true)
const spreadsheet = SpreadsheetApp.getActive()
for(let m of meta){
const value = spreadsheet.getRange(`'${m.sheet}'!A2:AD251`).getValue()
const check = spreadsheet.getRange(`'${m.sheet}'!B6`).getValue()
if(check!==''){
spreadsheet.getRange(m.range).setValue(value)
}
}
spreadsheet.setActiveSheet(spreadsheet.getSheetByName('Portfolio'), true);
}如果您希望API-* sheet的结果值是数字,则可以使用
if(isNaN(value)){而不是
if(check!==''){https://stackoverflow.com/questions/68730248
复制相似问题