首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将IF条件添加到Google Sheets宏中

将IF条件添加到Google Sheets宏中
EN

Stack Overflow用户
提问于 2021-08-10 16:14:45
回答 1查看 75关注 0票数 0

我将通过API将一些加密价格数据放入五个不同的Google工作表中,然后将所有这些信息合并为一个。问题是API有时会失败,并返回一个错误代码。

当发生这种情况时,我希望宏避免从该工作表中带来信息。

我检查工作表上的信息是否正确的方法是比较工作表上的单元格,例如,如果工作表上的单元格B6不等于文本"head",宏可以继续。

到目前为止,这是我的代码,我只需要添加IF语句,但我总是失败……

API-MARKETS是统一表,API-1...API-5是五个单独的表。

代码语言:javascript
复制
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);

};

谢谢。

EN

回答 1

Stack Overflow用户

发布于 2021-08-10 16:35:56

尝试使用:

代码语言:javascript
复制
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的结果值是数字,则可以使用

代码语言:javascript
复制
if(isNaN(value)){

而不是

代码语言:javascript
复制
if(check!==''){
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68730248

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档