5

Google Apps Scriptでアプリを作成しようとしていますが、画面の解像度(モバイルとデスクトップ)に応じて異なるレイアウトを表示したいと思います。しかし、画面の解像度を決定する方法については何も見つかりません。

もちろん、サーバー側から画面の解像度を判断することはできないので、クライアント側のハンドラーで何かできるか試してみましたが、ClientHandlers画面の解像度の方法がありません。また、を使用して手動のクライアントサイドスクリプトをアプリに追加しようとしましたがapp.createHTML()、GoogleはcreateHTMLを使用してJavaScriptを含めることを許可していません。

では、Google Apps Scriptを使用してブラウザの解像度を取得するにはどうすればよいですか?

4

2 に答える 2

6

JavaScriptのscreen.witdthプロパティは、GAS環境では機能しません。GASの内部にあるGoogleCaja消毒剤は、

キャッチされないスクリプトエラー:「画面が定義されていません。」ソース内:'tryit.asp?filename = tryjsref%5fscreen%5fwidth'行:7 tryit.asp?filename = tryjsref%5fscreen%5fwidth:7:画面が定義されていません。

次のHTMLページをCajaPlaygroundにロードする場合の例外。おそらくそれはCajaの問題です。

<!DOCTYPE html>
<html>
<body>

<script>

document.write("Test");
document.write("Total Width: " + screen.width);

</script>

</body>
</html>

考えられる回避策は、画面の解像度に依存するのではなく、ユーザーエージェント文字列を使用することです。この文字列には、ユーザーブラウザ「id」が含まれています。UiApp.getUserAgentメソッドはそれを返しますたとえば、デスクトップ上のMozilla Firefoxは、-のようなこの文字列を提供しますMozilla/5.0 (Windows NT 6.0; rv:15.0) Gecko/20100101 Firefox/15.0.1,gzip(gfe)。携帯電話では、この文字列には。が含まれます...(Android; Mobile; rv:15.0)...。チェックプロシージャは、返された文字列で単語MobileAndroidなどを検索します。そのうちの1つがモバイルプラットフォームであることがわかった場合、メインコードは相対的なコントロールサイズを使用してモバイルGUIを描画します。次のコードはそれを使用する方法を示しています

function doGet(e) {
  var app = UiApp.createApplication();
  app.add(app.createLabel(UiApp.getUserAgent()));
  return app;
}
于 2012-10-08T06:47:41.040 に答える
1

現在、このUIアプリを実行する既知の方法はありません。ただし、Google Apps ScriptでHtmlServiceを使用すると(前述のcreateHTML()ではなく)、JavaScriptを追加して、JavaScript、HTMl、CSSでUI全体を構築できます。

ドキュメントについては、 https://developers.google.com/apps-script/class_htmlserviceをご覧ください。

于 2012-10-07T15:04:14.957 に答える