首页 > 解决方案 > 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

标签: google-sheetsgoogle-sheets-formulaarray-formulascountif

解决方案


要使用自定义函数ARRAYFORMULA,您需要修改脚本。看这个例子


推荐阅读