Google Apps Script で、URL を Parse して、
domain 部や、path を取得しないといけない機会があり、
document.createElement
と使おうとしたり、
URL
を使おうとしたのですが、
動作せず、URI.js
を使うことにしたので、
その際にやったことを記載します。
参考
実装
document.createElement を使うが動作せず
Apps Script は、document オブジェクトがないってことだと思います。
- createElementTest.gs
function createElementTest() { var parser = document.createElement('a'); }
URL関数を使うが動作せず
「URL は定義されていません」になります。
- urlTest.gs
function urlTest() { var parser = new URL("http://www.example.com/files-tmb/1234/abc.png?key=val"); }
URI.js を使う
URL をparseできる ライブラリがないか検索したところ、
URI.js - URLs in Javascript を見つけました。
jqueryのplugin のjquery.URI.js
と、スタンドアロン版のURI.js
があるようで、
スタンドアロン版を、スクリプトエディタ上に貼り付けたところ、
動きそうな雰囲気があり、以下のようなテストコードを記載しました。
-
uriTest.gs
以下のようなログが出力されます。function uriTest() { var uri = new URI("http://www.example.com:8080/files-tmb/1234/abc.png?key=val"); Logger.log("href = %s", uri.href()); Logger.log("host = %s", uri.host()); Logger.log("hostname = %s", uri.hostname()); Logger.log("origin = %s", uri.origin()); Logger.log("password = %s", uri.password()); Logger.log("pathname = %s", uri.pathname()); Logger.log("port = %s", uri.port()); Logger.log("protocol = %s", uri.protocol()); Logger.log("search = %s", uri.search()); }
URL と同様の動作をしています。 -
OUTPUT
href = http://www.example.com:8080/files-tmb/1234/abc.png?key=val host = www.example.com:8080 hostname = www.example.com origin = http://www.example.com:8080 password = pathname = /files-tmb/1234/abc.png port = 8080 protocol = http search = ?key=val
その他の機能について
API としては、URL 自体を引数にとって、Parseしてくれる以外にも、
Serializing したり、Normalizing (正しい形式のURLに変換する) したり、
非常に多機能なようです。
詳細は、URI.js - API Documentation
に記載されてますので、興味ある方はご確認ください。
多機能な分サイズがそれなりに大きいので、一部の機能を使うために導入するのはあれかもしれませんが、
個人的に、Google Apps Script書く際は、重宝しそうです。
以上です。
コメント