昨夜スクリプトを実行し、実行トランスクリプトウィンドウを確認したところ、スクリプトは機能していました。その後、別のスクリプトを実行して実行トランスクリプトウィンドウを表示すると、以前に実行したスクリプトのトランスクリプトが表示されました。Chromeバージョン19.0.1084.52を使用していました。Firefoxバージョン18.0.2の最新バージョンを使用して再試行しましたが、同じ結果になりました。
今朝、ChromeのキャッシュとCookieをクリアして、もう一度やり直すことにしました。Chromeを読み込んだときに、データ(ブラウザの履歴、ブックマークなど)をGoogleアカウントと同期する際に「同期」の問題が発生したことが示されました。同期を無効にし、キャッシュとCookieをクリアして、Chromeを終了しました。Chromeをリロードし、ログインしてスクリプトプロジェクトを開きました。好奇心から、実行トランスクリプトウィンドウを表示しましたが、昨夜正常に実行したスクリプトのトランスクリプトがまだ残っていました。確かに、新しいスクリプトを実行したり、サインアウトしたりするときに、トランスクリプト/ログウィンドウをクリアする必要がありますか?
説明/シナリオ
いくつかのスクリプトファイルCode.gs、Test.gs、RemoveLabels.gs、CreateLabels.gsを含むGASスクリプトプロジェクトがあります。CreateLabels.gsという名前のスクリプトにtry...catchブロックを配置したいと思います。Gmailに新しいラベルが作成されます。ErrorTest.gsという名前の新しいスクリプトファイルを作成したので、Mozilla Developer Network Javascriptリファレンスドキュメントの例の1つを試して、エラーをスローすることができます--throw --JavaScript | MDN。
「オブジェクトをスローする」の例をページから(無効な月番号をテストします)新しいスクリプトファイルにコピーしましたが、期待どおりに機能します。
スクリプトファイルCreateLabels.gsに、次のコードを記述しました。
function UserException(message) {
this.message = message;
this.name = "UserException";
};
エラーをスローしたい関数には、次のものがあります。
function getDayTable() {
var myTable = new Object();
var values = g_ss.getSheetByName('Sheet2').getRange(2, 5, 2).getValues();
throw new UserException('Cannot access the spreadsheet');
values[0] [0] == "" ? myTable.year = 2005 : myTable.year = values[0] [0];
values[1] [0] == "" ? myTable.day = 1 : myTable.day = values [1] [0];
return myTable;
};
関数を呼び出すコードには、次のものがあります。
try {
var dayTable = getDayTable();
//throws an error if dayTable cannot be retrieved
} catch (e) {
Logger.log('There has been an error!');
logMyErrors_(e); //pass exception object to error handler
}
CreateLabels.gsという名前のスクリプトを実行しましたが、実行トランスクリプトウィンドウには、ErrorTest.gsという名前の以前の実行ファイルからのトランスクリプトがまだあります。同じプロジェクトで2つのスクリプトファイルを次々に実行しようとすると問題が発生しますか?