このユーザースクリプトは、Gemini の「アーティファクト(Article)」を Google ドキュメントにエクスポートするメインUI gemini-artifact-exporter のワーカー(バックグラウンド処理用)スクリプトです。
単体では機能しない、内部依存用のスクリプトです。
gemini-artifact-exporter と連携し、カスタムイベントを受信して実際のエクスポート操作(DOMのクリック、メニューの展開、待機処理など)をバックグラウンドで実行します。
実行中は画面上に控えめなインジケーターが表示され、進行状況(どのタイトルのキャンバスをエクスポートしているか)が視覚的に分かります。
gemini-artifact-exporter-worker:request イベントの受信と処理gemini-artifact-exporter-worker:result イベントによる結果の返信他のユーザースクリプトとカスタムイベントを通じて連携します。
以下のスクリプトに対してイベントをディスパッチし、処理を依頼します:
gemini-artifact-exporter-worker:result イベントを送信してエクスポート処理の成功や失敗(タイムアウト等)を通知します。gemini-turn-counter-copy-images イベントを送信して画像コピー処理を依頼します。EmulateDocsPaste イベントを送信してDocsへの貼り付けを依頼します。gemini-docs-closer-force-close イベントを送信してDocsタブの強制終了を依頼します。以下のスクリプトからイベントを受信し、自身の処理を実行します:
gemini-artifact-exporter-worker:request イベントを受信してエクスポートのバックグラウンド処理を開始します。gemini-artifact-exporter-worker:cancel イベントを受信して実行中のエクスポート処理をキャンセルします。gemini-turn-counter-copy-images-result イベントを受信して画像コピー結果を受け取ります。style.css と template.html にオフロードし、JavaScript のコード量を削減するリファクタリングを実施しました。innerHTML の使用を廃止し、DOM API を使った安全な実装に変更しました。
メインUIを持つ gemini-artifact-exporter との責務の分離を図るため、DOM操作や待機ロジックをこのスクリプトに切り出しています。
通信は document.dispatchEvent(new CustomEvent(...)) を介して行われ、メイン側は Promise で結果を待機する設計になっています。