使用在具有不同数据的列中具有多个参数的数组创建自定义公式
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 的期望值。所以,请根据您的情况修改脚本。
到目前为止,我已经设法让它适用于单个参数 (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 的期望值。所以,请根据您的情况修改脚本。