ここで少し奇妙な問題に遭遇します。私はまだ 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)
(「キャリア」の周りの引用符に注意してください)。
式が呼び出されたときに式を引用符で囲む必要がないようにするための解決策を見つけるために、私はいたるところを見てきましたが、これまでのところ運がありませんでした。誰にもアイデアがありますか?