【问题标题】:Google Scripts: Combining multiple functions and output on same row (cell+ [1] [2], etc)Google Scripts:组合多个函数并在同一行输出(单元格+ [1] [2] 等)
【发布时间】:2020-02-21 17:51:59
【问题描述】:

我在使用 Google 脚本中的以下公式时遇到了一些困难。我想要实现的是:

1- 从 A1 中获取数字

2-来自Number,有多个返回

3- 将这些返回值设置在与原始数字相同的行 (A) 中,在相邻单元格 (A2, A3) 中

现在的样子:

function GETALLTWO(bid) {
  if (input.map) {     
    return input.map(GETALLTWO)
  } else {
    return input;
  }
  var api_str = "client_id=randomstringofnumbers&client_secret=anotherrandomstringofnumbers";
  var url= "https://api.untappd.com/v4/beer/info/" + bid + "?" + api_str;
  var response = UrlFetchApp.fetch(url);
  if (response.getResponseCode() == 200) {
    var respObj = JSON.parse(response.getContentText());
    var beer = respObj.response.beer;
    if (beer.bid == bid) {
      return beer.beer_name;
      return beer.rating_score;
      return beer.stats.total_user_count;
      return beer.rating_count;
      return beer.stats.monthly_count;
      return beer.created_at;
    }
  }
}

从 Code.gs 中,我可以得到第一个 Return to work,但我是否正确组合了不同的功能?以及如何设置返回位置?

希望有人可以提供帮助,希望了解有关脚本的更多信息。

// 编辑以备将来参考:

function getAll(bid) {
  var ss=SpreadsheetApp.getActive();
  var sh=ss.getSheetByName('Overview')
  var row=sh.getActiveCell().getRow();
  var bid=sh.getRange(row,3).getValue();
  var api_str =     "client_id=randomstring&client_secret=randomstring";
  var url= "https://api.untappd.com/v4/beer/info/" + bid + "?" +     api_str;
  var response = UrlFetchApp.fetch(url);
  if (response.getResponseCode() == 200) {
    var respObj = JSON.parse(response.getContentText());
    var beer = respObj.response.beer;
    if (beer.bid == bid) {
      var rObj= {name:beer.beer_name,rating:beer.rating_score,totalcount:beer.stats.total_user_count,ratingcount:beer.rating_count,monthlycount:beer.stats.monthly_count,createddate:beer.created_at};
      values=[[rObj.name,rObj.ratingcount,rObj.rating,rObj.totalcount,rObj.monthlycount,rObj.createddate]];
      return values;
    }
  }
}

【问题讨论】:

  • 同一行或同一列? A2,A3 是同一列。 A1,B1 是同一行

标签: arrays string google-apps-script custom-function


【解决方案1】:

使用此功能,您只需将光标放在要从中获取出价的行上。它会将数据放回从 D 列开始的那一行

function getAllTwo() {
  var ss=SpreadsheetApp.getActive();
  var sh=ss.getSheetByName('Your Sheet Name')
  var row=sh.getActiveCell().getRow();
  var bid=sh.getRange(row,3).getValue();
  var api_str = "client_id=randomstringofnumbers&client_secret=anotherrandomstringofnumbers";
  var url= "https://api.untappd.com/v4/beer/info/" + bid + "?" + api_str;
  var response = UrlFetchApp.fetch(url);
  if (response.getResponseCode() == 200) {
    var respObj = JSON.parse(response.getContentText());
    var beer = respObj.response.beer;
    if (beer.bid == bid) {
      var rObj= {name:beer.beer_name,rating:beer.rating_score,totalcount:beer.stats.total_user_count,ratingcount:beer.rating_count,monthlycount:beer.stats.monthly_count,createdate:beer.created_at};
      values=[[rObj.name,rObj.ratingcount,rObj.rating,rObj.totalcount,rObj.monthlycount,rObj.createddate]];
      sh.getRange(row,4,values.length,values[0].length).setValues(values);
    }
  }
}

【讨论】:

  • 谢谢,我将 input.map 留在了脚本之外。我认为阵列是必要的。现在我想知道结果在哪里;函数 GETALLTWO(bid) 从单元格中获取数字。我希望该函数在同一行的单元格中显示 Return。我该怎么办?现在我只得到一个空白单元格。
  • 您能分享一张您的电子表格的图片吗?不是电子表格,只是一张图片。
  • 工作表名称是什么?如果我们只是在运行函数时从光标所在行的工作表中获取数据,然后您可以将其返回到同一行。
  • 我只是继续并认为这样做是可以的。看看我的回答吧。如果您不同意我的方法,请建议您自己的方法,我会按照您的方式进行。
  • 非常感谢 Cooper,您帮了大忙;我现在慢慢明白了一点!
猜你喜欢
  • 2021-04-24
  • 2014-07-19
  • 2019-12-31
  • 1970-01-01
  • 2018-08-07
  • 1970-01-01
  • 2023-03-02
  • 1970-01-01
  • 2022-01-01
相关资源
最近更新 更多