google-sheets - ARRAYFORMULA 不适用于包含 IF 和 COUNTIF 的自定义公式
问题描述
我正在运行一个=ARRAYFORMULA()
自=IF()
定义公式 ( =getRedirect()
),它检索单元格范围内的重定向缩短 URL 的原始 URL,以获取原始 URL 中的用户 ID。如果单元格中的 URLB:B
是重定向缩短的 URL,它会运行自定义公式并将用户 IDC:C
运行=MID()
到自定义公式的输出后输出。如果单元格B:B
中的 URL 是原始 URL,则在其上C:C
运行后将用户 ID 输出到=MID()
其中。根据=IF()
中的单元格值输出特定的错误消息B:B
。
这是自定义公式 -
var response = UrlFetchApp.fetch(url, {'followRedirects': false, 'muteHttpExceptions': false});
var redirectUrl = response.getHeaders()['Location']; // undefined if no redirect, so...
var responseCode = response.getResponseCode();
if (redirectUrl) { // ...if redirected...
var nextRedirectUrl = getRedirect(redirectUrl); // ...it calls itself recursively...
Logger.log(url + " is redirecting to " + redirectUrl + ". (" + responseCode + ")");
return nextRedirectUrl;
}
else { // ...until it's not
Logger.log(url + " is canonical. (" + responseCode + ")");
return url;
}
}
这是我在 C:C 中输入的内容 -
=ARRAYFORMULA(IF($B2:B="","<--- Please insert TikTok video's URL",IF(COUNTIF($B2:B,"*/video/*"),MID($B2:B,FIND("~",SUBSTITUTE($B2:B,"/","~",5))+1,19),IFERROR(MID(getRedirect($B2:B),FIND("~",SUBSTITUTE(getRedirect($B2:B),"/","~",6))+1,19),"<--- error in URL"))))
公式正常输出,没有=ARRAYFORMULA()
. 不确定是否=ARRAYFORMULA()
是=COUNTIF()
由于C:C
.
具有预期结果的样本表 - https://docs.google.com/spreadsheets/d/1rJKm5KIT8itZs2AC0wdDZ-CGar4mERu4jzJ3mN7KMb8
解决方案
要使用自定义函数ARRAYFORMULA
,您需要修改脚本。看这个例子
推荐阅读
- java - 无法弄清楚如何获得正确的输出
- javascript - 在 Sequelize 中,我如何检索父记录及其所有孩子,但仅在孩子和孙子之间存在条件的情况下?
- aws-sdk - 具有内容长度范围支持的预签名后 java sdk
- node.js - 仅当我更改窗口大小或类型时才会打印 nodejs readline 问题
- c# - 单元测试用例的最佳实践
- gcc - 由 C 编译器初始化闪存数据
- firebase - 如何将 Firestore 文档更新限制为仅在规则中增加一?
- java - 将 SMB 端点与 Camel v3 和 camel-extra 中的 camel-jcifs 连接起来
- python - (Python/Django) 如何在模型中进行对象级自定义验证?
- jestjs - TypeError:R.unless 不是函数