LoginSignup
12
6

More than 5 years have passed since last update.

Google App Maker ー スクリプトから開いているURLを取得する方法

Last updated at Posted at 2017-10-02

App Maker のスクリプトから開いているURLが欲しいなーと思ったときに調べた際のメモ。

そもそも App Maker ってなに?という人は、以下の記事を参照してください。
Google App Maker とは? 短期間で Web アプリケーション構築を可能にした理由

サーバーサイド(GAS)

ScriptApp.getService().getUrl()

〜execまでが欲しい場合はこれでよい。

クライアントサイド(JS)

google.script.url を使う

URLパラメータやハッシュ値ならこれでも取得できる

google.script.url.getLocation(function(location) {
  console.log(JSON.stringify(location)); // -> {"parameter":{},"parameters":{},"hash":"MessageCreate"}
});

window.parent.document.referrer を使う

※ 階層構造は変わる可能性があるので、この方法は得策ではない。
これが動かなくなるとアプリケーションとして成り立たなくなるような場合に使ってはいけない。

以下は調べたときに勉強になったのでメモ

App Maker の構造

App Maker は iframe が二重でかかっているので、それを加味して取得する必要がある。
作成した画面はふたつめの iframe に書かれる。

image.png

一番上で実行

window.location.href ->
"https://script.google.com/a/macros/howdylikes.jp/s/AKfycbxFNha8YfDQtgMk1wQOWd8TypvAw-WbDhpGWf1sg96e7VyD4icPElmUIA/exec"

ひとつめのiframeで実行

window.location.href ->
"https://n-3dz2ufoyafrtygsybc7tju6pst5of6wjjnxddji-0lu-script.googleusercontent.com/userCodeAppPanel"
window.document.referrer ->
"https://script.google.com/a/macros/howdylikes.jp/s/AKfycbxFNha8YfDQtgMk1wQOWd8TypvAw-WbDhpGWf1sg96e7VyD4icPElmUIA/exec"

ふたつめのiframeで実行

window.location.href
"https://n-3dz2ufoyafrtygsybc7tju6pst5of6wjjnxddji-0lu-script.googleusercontent.com/userCodeAppPanel"
window.document.referrer ->
"https://n-3dz2ufoyafrtygsybc7tju6pst5of6wjjnxddji-0lu-script.googleusercontent.com/userCodeAppPanel"
window.parent.document.referrer ->
"https://script.google.com/a/macros/howdylikes.jp/s/AKfycbxFNha8YfDQtgMk1wQOWd8TypvAw-WbDhpGWf1sg96e7VyD4icPElmUIA/exec"

おまけ

window.parent.parent.location.href だと origin が違うため怒られてしまう。

window.parent.parent.location.href ->
VM6063:1 Uncaught DOMException: Blocked a frame with origin "https://n-3dz2ufoyafrtygsybc7tju6pst5of6wjjnxddji-0lu-script.googleusercontent.com" from accessing a cross-origin frame.
    at <anonymous>:1:31
12
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
6