GoogleAppsスクリプトを実行するリンクがGoogleサイトページにあります。Firefoxで手動でリンクをクリックすると正常に動作します。
HtmlUnitを使用して同じことを行うと、すべてが正常に機能するようです。HtmlUnitを使用すると、サインインして(Google Appsスクリプトを実行するときにサインインする必要があります)、Webページにアクセスし、リンクを特定してクリックできますが、スクリプトは実行されません。
コードの本質は単純です:
WebClient webClient = new WebClient(BrowserVersion.FIREFOX_3_6);
HtmlPage page = webClient.getPage("https://sites.google.com/site/mywebpage");
HtmlAnchor anchor = page.getAnchorByName("MyAnchor");
anchor.click();
では、何が欠けているのでしょうか、それとも私が間違っているのでしょうか。
Webページに元のリンクを次のように作成しました。
<a href="/macros/sites?action=run&lib=094bahv51120b3d65&funcName=MyFunctionName" name="MyAnchor">Click here to run function</a>
Webページの編集を保存すると、Googleサイトはこれを自動的に次のように変更しました。
<a href="#" name="MyAnchor" class="apps-script-run-link" id="ACiQKe2HyNeo..etc...01120b3d65#MyFunctionName">Click here to run function</a>
click()
リンク定義の代わりに「#」になっているhref属性に作用するため、機能していませんか?または、JavaScript(Mozilla Rhino)に対するHtmlUnitの言語サポートは、クリックされたリンクを処理するためにJavascriptを正しく実行しません(つまり、RhinoをGoogleサイトのWebページでJavascriptを認識するものに置き換える必要があります)?または私が犯した他のいくつかの基本的な間違い?
私は迷子になっているので、どんな助けでも大歓迎です!
アップデート
私はあなたの提案、ロドニーに従いました、そして、問題がグーグルサイトからログオフしていないことを発見しました。リンクをクリックしてスクリプトを実行した後、HtmlUnitを使用して[サインアウト]リンクをクリックすると、スクリプトが正常に実行されます。唯一の問題は、次のエラーが発生することです(スクリプトの実行が停止しません)。
重大:予期しないRuntimeExceptionでジョブの実行が失敗しました:
TypeError:nullのプロパティ"innerHTML"を"Finished script:FinishedscriptMyFunctionName"に設定できません
更新2
この問題も解決しました。サインアウトに進む前に、スクリプトを完了するのに十分な時間がありませんでした。これを追加すると修正されました:
webClient.waitForBackgroundJavaScriptStartingBefore(5000);
あなたの助けに感謝します、ロドニー-そして良い編集のためのナビーン!