在这里遇到了一个奇怪的问题。我仍在学习为 Google Apps 编写函数的细节,我的第一个真正的项目是“运输仪表板”——基本上是一个电子表格,我可以在其中获取 UPS、FedEx 等的跟踪号,并从中获取解析载体,生成跟踪链接,那种东西。我正在尝试将其设置为一个函数,我可以在其中设置请求的数据类型(例如,承运人)、跟踪号,并让它返回所述信息。这是我现在所处的位置:
function trackingData(infoType,trackingNumber) {
//Regex for various carrier's tracking numbers.
var upsValue = /\b(1Z ?[0-9A-Z]{3} ?[0-9A-Z]{3} ?[0-9A-Z]{2} ?[0-9A-Z]{4} ?[0-9A-Z]{3} ?[0-9A-Z]|[\dT]\d\d\d ?\d\d\d\d ?\d\d\d)\b/i;
var fedexValue = /(\b96\d{20}\b)|(\b\d{15}\b)|(\b\d{12}\b)/;
var uspsValue = /\b(91\d\d ?\d\d\d\d ?\d\d\d\d ?\d\d\d\d ?\d\d\d\d ?\d\d|91\d\d ?\d\d\d\d ?\d\d\d\d ?\d\d\d\d ?\d\d\d\d)\b/i;
//First option: we want to know the carrier we're shipping with.
if (infoType == 'carrier') {
if (upsValue.test(trackingNumber)) {
return 'UPS';
}
else if (fedexValue.test(trackingNumber)) {
return 'FedEx';
}
else if (uspsValue.test(trackingNumber)) {
return 'USPS';
}
else return null;
}
传递 infoType 的值时会出现问题 - 如果我引用一个单元格,或者将每个 infoType 设置为变量并在调用公式时直接输入一个值,它就可以正常工作。但是,如果我通过放入一个单元格来调用它:
=infoType(carrier,trackingNumber)
我得到:
error: Unknown range name carrier
奇怪的是,如果我用以下方式调用它,它确实有效:
=infoType("carrier",trackingNumber)
(注意“运营商”周围的引号)。
我到处寻找解决方案,以避免在调用公式时不必在公式周围加上引号,但到目前为止还没有任何运气。有人有想法吗?