質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

Q&A

1回答

3914閲覧

gasで自身をスクレイピングしたい

compliance1

総合スコア6

Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

0グッド

0クリップ

投稿2017/10/07 12:17

###前提・実現したいこと
google apps scriptでwebアプリを公開しました
そのscriptから、定期的に自身にアクセスを当て、スクレイピングしたいと思い、以下のコードを書きました。
すると、知らないコードが返ってきました。
自分で書いたhtmlを受け取るにはどうすればいいですか?

###発生している問題
返ってきた知らないコード
長いので後ろの方をカットしています

logger.log [17-10-07 21:05:29:155 JST] <!doctype html> <html> <head> <meta name="chromevox" content-script="no"><link rel="stylesheet" href="/static/macros/client/css/224145535-mae_html_css_ltr.css"> <script type="text/javascript" src="/static/macros/client/js/711297240-warden_bin_i18n_warden.js"></script> </head> <body> <table id="warning-bar-table" class="full_size" cellspacing="0" cellpadding="0"><tr><td><div id="warning" class="warning-bar"></div></td></tr><tr><td style="height: 100%"><iframe id="sandboxFrame" sandbox="allow-forms allow-modals allow-popups allow-popups-to-escape-sandbox allow-same-origin allow-scripts allow-top-navigation"> </iframe> </td></tr></table><script type="text/javascript"> var el = document.getElementById('sandboxFrame'); el.onload = function() { goog.script.init("boxMode\x22:\x22IFRAME_SANDBOX\x22,\x22libid\x22:\x22Mt3NspQwFyALwrJtSkISKatLyYyhOIA4a\x22,\x22callbackTimeout\x22:390000,\x22eei\x22:\x22\x22,\x22sandboxHost\x22:\x22https://n-プレビューす

###該当のソースコード

function myFunction() { var response = UrlFetchApp.fetch("https://script.google.com/macros/s/キー/exec"); Logger.log(response); } //https://script.google.com/macros/s/キー/execはこのスクリプトでアプリを公開した時にもらったurlです

###試したこと
公開時の設定を、
次のユーザーとしてアプリケーションを実行:自分
アプリケーションにアクセスできるユーザー:全員(匿名も含む)
にしています
グーグルアカウントはログアウトした状態での、https://script.google.com/macros/s/キー/execのアクセス確認はできています

###補足情報(言語/FW/ツール等のバージョンなど)
言語はgas,htmlです
エディタはgoogle apps scriptです

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

GAS で公開したウェブサービスのスクレイピングを初めて試してみましたが、
質問者さんと同様、公開した HTML とは違った形で取得されました。
ですが全く別物というわけではなく、GAS がフレームワーク?で囲んでいるだけのようです。

また Unicode でエスケープされているようなので見辛いですが、
欲しい箇所を正規表現等で抜き出すことは不可能ではなさそうです。
試しに <title> タグの文章を抜き出してみました。

公開したウェブアプリケーション

コード.gs

function doGet() { return HtmlService.createHtmlOutputFromFile("index.html"); }

index.html

html

1<!DOCTYPE html> 2<html> 3 <head> 4 <base target="_top"> 5 <title>スクレイピングテスト用</title> 6 </head> 7 <body> 8 <h1>これはテストです</h1> 9 </body> 10</html>

スクレイピング

コード.gs

function myFunction() { const URL = "https://script.google.com/macros/s/XXXXXXXXXXXXXXXXXXXXX/exec"; var response = UrlFetchApp.fetch(URL); var text = response.getContentText(); var title = text.match(/\\u003ctitle\\u003e(.*?)\\u003c/); Logger.log(title[1]); }

レスポンス一部抜粋

\u003ctitle\u003eスクレイピングテスト用\u003c\/title\u003e\n \u003c\/head\u003e\n \u003cbody\u003e\n \u003ch1\u003eこれはテストです\u003c\/h1\u003e\n

実行結果

[17-10-13 00:02:55:821 JST] スクレイピングテスト用

投稿2017/10/12 15:05

rokuni

総合スコア174

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

compliance1

2017/10/24 02:15

返信遅くなってすみません 本当にありがとうございます 本当ですね、スクレイピンングはできているようです ただ難しいですね...... また、このコードをスクレイピングだけでなく実行したいのですが、できていません どういったことが考えられますか?
rokuni

2017/10/24 04:59

「このコード」とは、質問者さんが Web アプリとして公開したコードのことでしょうか? HTML ファイルに JavaScript が埋め込まれており、JavaScript が HTML に展開されていないのはなぜか?という意図だと受け止めて解答します。 UrlFetchApp.fetch(url) では JavaScript がそのまま取得されます。 もしブラウザで読み込んだように HTML に展開された結果が欲しいのであれば、PhantomJSCloud のサービスを利用すれば可能でしょう。 https://phantomjscloud.com/ もしくは、JavaScript ではなく GoogleAppsScritp を埋め込めば取得できるかもしれません。 Apps Script code in scriptlets https://developers.google.com/apps-script/guides/html/templates#apps_script_code_in_scriptlets
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問