2012-05-11 2 views
1

1800行のプロジェクトをスプレッドシートスクリプトエディタ内の12個のファイルに分割しました。私は、検索機能がアクティブなファイル内でのみ検索することに気づいた。スクリプトエディタ/ファイル

とにかくグローバル検索を行うにはどうしますか?

また、プロジェクト内のファイルに関連して、エラーがスローされると、行番号は参照されますが、ファイル名は参照されません。

エラーの原因となった行がどのファイルに含まれているかを判断する方法はありますか?

おかげ ダン

答えて

2

グローバル検索を実行する方法はありません。 Findは現在のファイルのみを検索します。私はそこに見つけること、それは、プロジェクト全体を横断だろうと私は提出し、2011年9月に戻って発行し、課題トラッカーにで置き換える必要があることに同意:

http://code.google.com/p/google-apps-script-issues/issues/detail?id=822

そこに行くと、それを投票することが主演してくださいこの問題に関する進捗状況を通知します。

エラーメッセージで報告されていないファイル名の問題もで課題トラッカーで提起されてきた:あなたはのtry-catchするエラーが発生しているエラーの原因となったファイルを判別するには

http://code.google.com/p/google-apps-script-issues/issues/detail?id=747

+0

ありがとうScampMichael!私は両方に出演した。 – Dan

2

スタックトレースを解析します。グローバル検索について

function yourCallingfunction() { 
    try { 
    //do your thing 
    } catch(err) { 
    stack = parseErr_(err) 
    Logger.log(stack); 
    throw stack; 
    } 
} 

//Try to parse errors stacktrace into a nicer format 
function parseErr_(e) { 
    var ret; 
    if(e !== undefined && e !== null && e.stack) { 
    ret = e.name +': '+e.message+' \nStacktrace: \n'; 
    var stack = e.stack.replace(/\n/g,'').match(/:\d+(\([^\)]+\))?/g); 
    for(var i in stack) 
     ret += stack[i].replace(/[\(\):]/g,'').split(/ /).reverse().join(':') + ' \n'; 
    } else 
    ret = e; 
    return ret; 
} 

、あなたの問題のみを見つけている場合は、交換しないで、あまりにも回避策があります:ここでは、私が何をすべきかです。これを見てください:

function showMe() { 
    for(var i in this) 
    Logger.log(this[i].toString()); 
} 

これは実際の解決策ではありません。あなたは@ScampMichaelによってリンクされた問題に星を付けるべきです

+0

これは非常に興味深いコードです、Henriqueありがとう!私はこれらの数行のコードから多くを学びました。私はこれに関連する2つの問題を主演した。 – Dan

+0

@Henriqueなぜあなたはスタックを投げて、あなたがキャッチしたエラーを投げないのですか? –

+0

@PeterHerrmannだから、スタックを見るためにスクリプトログを開く必要はありません。メッセージのすぐそばにあります。当然、私はエラーとは何もしていないときにスタック上の最後の関数でこれを行うだけです。私のトリガと "完成した"スクリプトでは、私は通常、それを私にメールするだけでなく、私が得ることができるすべての現状をメールします。 –