コンテンツにスキップ

スクリプティング概要

Guida にはブラウザー自動化のためのスクリプティング環境が組み込まれています。スクリプトは g.* API を通じてページと対話し、データを管理し、ワークフローを組み立てます。

3 つのエンジンを利用できます。

  • JavaScript (ClearScript V8) - ES2024+、トップレベル await、ネイティブ Promise、Chrome や Node.js と同じ V8 エンジンによる ES モジュール import。
  • Lua (LuaCSharp) - 通常の Lua 構文、テーブル中心の API、require() で読み込むワークスペースライブラリ。
  • Janet (JanetSharp) - 不変データ構造と組み込み PEG エンジンを備えた関数型 Lisp 方言。

3 つのエンジンは同じ g.* API 面を共有します。

多くの自動化作業は非同期です。早期 return が不要なスクリプトでは、Guida はトップレベル await をサポートします。

const tabs = g.tabs.getTabs();
g.log("開いているタブ: " + tabs.length);

途中で終了したい場合や return を使いたい場合は、async function main() にコードを包み、末尾で await main(); を呼び出します。

F5 でエディター内のスクリプトを実行します。

JavaScript と Janet では、g.* メソッドは値を直接返し、失敗時には例外を投げます。

try {
await g.dom.click("#submit");
} catch (e) {
g.log("クリックに失敗しました: " + e.message);
return;
}

Lua では慣用的な複数戻り値(nil, error)を使います。これにより、開発中に Visual Studio デバッガーが「未処理」例外で止まりにくくなります。

local success, err = g.nav.navigateToUrl("https://example.com")
if not success then
g.log("エラー: ナビゲーションに失敗しました: " .. err)
else
g.log("ページを読み込みました")
end

JavaScript では await を使います。Lua と Janet では、エンジンが呼び出しを自動的に待機します。

async function main() {
await g.nav.navigateToUrl("https://example.com");
await g.dom.waitForDomStable();
const html = await g.page.getDom();
g.log("ページを読み込みました。DOM 長: " + html.length);
}
g.nav.navigateToUrl("https://example.com")
g.dom.waitForDomStable()
local html = g.page.getDom()
g.log("ページを読み込みました。DOM 長: " .. #html)
(g.nav.navigateToUrl "https://example.com")
(g.dom.waitForDomStable)
(def html (g.page.getDom))
(g.log (string "ページを読み込みました。DOM 長: " (length html)))

スクリプトは現在のワークスペースを基準に実行されます。ワークスペースにはスクリプト、ストア、キュー、検索インデックス、カスタムツール、ドメイン設定を置けます。

ワークスペースがあると、AI エージェントにも「このプロジェクトで何をしてよいか」を明確に渡せます。詳しくはワークスペースを参照してください。

Tools > Developer > Generate Scripting Support Files… を使うと、現在の API に合わせた TypeScript 定義、Lua/Janet ガイド、ワークスペース LLM 指示、TypeScript 作成用 scaffold を生成できます。

g.generateApiDocs() は TypeScript 専用の上級ヘルパー(advanced TypeScript-only helper)です。通常は Generate Scripting Support Files を使ってください。