.gs
別々のファイルのすべてのコードが 1 つのファイルに忠実にコピーされた場合、スクリプトの実行が停止する理由はありません.gs
。(ただし、これを行う正当な理由はありません。実際、Romain がこの例で行ったように、コードを分離することをお勧めします。)
知ってますか?複数の「ファイル」を含むスクリプトを実行すると、スクリプト全体が「ロード」されて実行されます。マシンにとって、複数の gs ファイルの存在は意味がありません。それらは作成者にとって単に便利なだけです。すべてのファイルのすべての関数とグローバル変数は、個々のファイルのコーディングに使用できます。関数のスコープ外のすべてのステートメントが実行されます。(したがって、すべての gs ファイルの先頭に次のようなものがある場合var sheet = SpreadsheetService.getActiveSheet()
、複数回実行されます。必要なのは 1 つだけです。)
この時点でのオプションは次のとおりです。
- データがまだ有効であることを確認してください。たぶん、コードに問題はありません。
- 失敗した実行の後に実行トランスクリプトを見て、どこで問題が発生したかの手がかりが得られるかどうかを確認します。少なくとも、どこで停止したかがわかります。
- 元のコードと比較して手動マージを確認し、コードが正しくコピーされていることを確認します。これについて別の目があれば、さらに良いでしょう。
- デバッガーまたはロガーを使用して慎重に
processRow()
説明merge()
します。前者は電子メールが送信される唯一の場所であり、後者はメインのマージ操作を実行します。観測された問題は、電子メールが送信されないことであるため、ここでデバッグを開始することは理にかなっています。
- 元に戻ってやり直します。
スクリプトをマージするときに何がうまくいかないかについてのアイデアはありますか?
括弧 ({
と}
) の配置を間違えると、データ構造と関数が変わる可能性があります。
gs では関数の複数のコピーが許可されていますが、一番下のものだけが実行されます。この場合、エラー メッセージは表示されませんが、期待どおりに動作しない可能性があります。(元の YAMM2 スクリプトには重複した関数名はありませんでしたが、ギャラリーで重複している他のスクリプトを見てきました。)
たとえば、関数をコンパニオン gs ファイルから Code.gs にコピーし、元のファイルの関数の BODIES をコメント アウトした場合、それらの関数のいずれかを呼び出すと、コンパニオン ファイルからではなく空のバージョンが実行されます。 Code.gs にコピーします。
オペレータ エラー。私たちは皆そこにいました。