使用在具有不同数据的列中具有多个参数的数组创建自定义公式

Creating a custom formula with array having multiple arguments in columns with different data

到目前为止,我已经设法让它适用于单个参数 (body) 但没有第二个参数 (photoUrl):

function SendTelegram(body,photoUrl) {
  if (body.map) {
    var response = body.map(function(b) {return SendTelegram(b);});
  } else {
    var response = UrlFetchApp.fetch(
      "https://api.telegram.org/bot" + 'AAA' + 
        "/sendPhoto?caption=" + encodeURIComponent(body) + 
          "&photo=" + encodeURIComponent(photoUrl) + 
            "&chat_id=" + 'BBB' + 
              "&disable_web_page_preview=true&parse_mode=HTML"
    );
  }
}

我无法理解我应该如何处理这两个不同的参数,例如,电子表格中的函数将是:

=ARRAYFORMULA(SendTelegram(A1:A,B1:B))

在我尝试添加第二个参数时,它总是在所有调用中使用第一行值,它不会一个接一个地跟随数组。

在您的脚本中,在 var response = body.map(function(b) {return SendTelegram(b);});SendTelegram(b) 处,未设置第二个参数。这样,在第二个循环中, photoUrl 没有声明。我认为这可能是您遇到问题的原因。

并且,在您的脚本中,我认为可能需要 return 响应值。那么,下面的修改呢?

修改后的脚本:

function SendTelegram(body, photoUrl) {
  if (body.map) {
    return body.map((b, i) => SendTelegram(b, photoUrl[i]));
  } else if (body && photoUrl) {
    return UrlFetchApp.fetch(
      "https://api.telegram.org/bot" + 'AAA' +
      "/sendPhoto?caption=" + encodeURIComponent(body) +
      "&photo=" + encodeURIComponent(photoUrl) +
      "&chat_id=" + 'BBB' +
      "&disable_web_page_preview=true&parse_mode=HTML", { muteHttpExceptions: true }
    ).getContentText();
  }
  return null;
}

注:

  • 这是一个简单的修改。因为我无法理解您对 URL 的期望值。所以,请根据您的情况修改脚本。