🔸 背景
スプレッドシートと Apps Script の組み合わせって非常に強力で、いろんな業務フロー構築に利用させてもらっています。便利な一方、細かい不満はいろいろ出てきます。その不満のうちのいくつかを解決する手段を考えてみました。他のエンジニアの方が作成した Apps Script を編集する機会がよくあります。その時に困るのが...
他者作成のトリガー
他者が作成したトリガープロジェクトに残ってしまっているケースが多々あります。トリガー作成者でないとトリガーが削除できないにも関わらず、作成者にコンタクトがとれない場合にトリガーを削除するのに四苦八苦します。まだ、そのトリガーが有効であれば、その関数内で、deleteTrigger を実行してやれば削除できますが、すべてのトリガーが終了してしまっていると、手のつけようがありません。
このような場合に、他者作成のトリガーを削除する方法がないかを検証しました。
🔸ソリューション
その1 スプレッドシート毎コピーして、スプレッドシートを置き換えてしまう
これは、スプレッドシートと、それに連携する Apps Script を総入れ替えすることになるので、確かにトリガーは削除されます。しかし、スプレッドシートの URL が変更されてしまいます。そのため、このシートを参照している場合の参照エラーが発生するケース可能性があります。また、このスプレッドシート内で IMPORTRANGE を実行している場合に アクセス権限エラー(#REF!)が発生してしまう場合があります。こちらは手間が大きいので最終手段ですね。
その2
いろいろ調べましたが、他者が作成したトリガーは、その方以外は削除できないという制限は避けられそうにもありません。スプレッドシートに紐づいている Apps Scriptを置き換えること対応することにしました。
-
スプレッドシートに紐づいている Apps Script のコードエディタを開き 「概要」タブを開き、画面右上部にある「コピーを作成」ボタンを押し、コードの複製を作成してから、Apps Script のコードエディタを閉じます。
-
再度、スプレッドシートの拡張機能/Apps Script メニューで Apps Script Editor を呼び出すと、次の画面に遷移するので、オリジナル(ここでは「無題のプロジェクト」)をクリックして元のプロジェクトを開きます
-
前回と同様に「概要」タブを開き、今度は右上の「削除」を選び元のプロジェクトを削除します
《注意》このプロジェクトでデプロイされている Webサービスや、すべてのトリガー設定、Script Propery に書き込まれている情報が失われることを理解してから削除してください
スクリプト実行ログもクリアされるので、コードのクリーンアップをする際にご利用ください。