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

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

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

cURLはHTTP, FTPやTelnetなど複数のプロトコルを用いてデータを転送するライブラリとコマンドラインツールを提供します。

Google Apps Script

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

HttpWebRequest

HttpWebRequestとは.NETにおけるクラスであり、WebRequestクラスをHTTPに導入するものです。

OAuth

OAuth(Open Authorization)は、APIを通して保護されたリソース(サードパーティのアプリケーション)へアクセスする為のオープンプロトコルです。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

1回答

2828閲覧

GoogleAppsScriptを利用してprivateなScrapBoxのデータを取得する

tamanegine

総合スコア177

cURL

cURLはHTTP, FTPやTelnetなど複数のプロトコルを用いてデータを転送するライブラリとコマンドラインツールを提供します。

Google Apps Script

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

HttpWebRequest

HttpWebRequestとは.NETにおけるクラスであり、WebRequestクラスをHTTPに導入するものです。

OAuth

OAuth(Open Authorization)は、APIを通して保護されたリソース(サードパーティのアプリケーション)へアクセスする為のオープンプロトコルです。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

1クリップ

投稿2018/11/15 03:14

実現したいこと

ネットワーク関連はまだ始めたばかりなのでわからないことが多いですが宜しくおねがいします。
実現したいことはGoogleAppsScriptを利用してprivateなScrapBoxのデータを取得することです。
データを取得するには"https://scrapbox.io//api/pages/:projectName/:pageTitle/text"にアクセスする必要がありますが、privateなため認証が必要です。

問題

ScrapBoxはGoogleのOpenIDを利用しているためどこにIDやパスワードをリクエストしたら良いのかわかりません。
最初は"https://scrapbox.io/google"にリクエストを送りましたが、

https://scrapbox.io/google のリクエストに失敗しました(エラー: 403)。サーバー応答の一部: {"message":"Your session has been expired. Please reload. (CSRF Token does not match)"}

というエラーメッセージが出ました。

ブラウザのツールから"https://accounts.google.com/o/oauth2/v2/auth?prompt=select_account&response_type=code&redirect_uri=https%3A%2F%2Fscrapbox.io%~"(長いため省略)が取り出せました。
しかしここにリクエストを送ったところ

  1. That’s an error.

Error: invalid_request
Parameter not allowed for this message type: password

というエラーメッセージが出たためpasswordを抜いたものをリクエストしたら200が帰ってきました。
当然ですが認証はされていません。

できたこと

ブラウザのクッキーを取り出してGASに保存し、scrapBoxのデータを取り出せるか・・・こちらは取り出すことができました

ソースコード

Javascript

1function myFunction() { 2 var payload = { 3 "EmailAddress" : "xxx@gmail.com", 4 "password" : "yyyy" 5 } 6 // POSTオプション 7 var options = { 8 "method" : "POST", 9 "payload" : payload, 10 "followRedirects" : true, 11 "muteHttpExceptions" : true 12 } 13// var response = UrlFetchApp.fetch("https://scrapbox.io/google"); //Error403 14 var response = UrlFetchApp.fetch("https://accounts.google.com/o/oauth2/v2/auth?prompt=select_account&response_type=code&redirect_uri=https%3A%2F%2Fscrapbox.io%2Fauth%2Fgoogle%2Fcallback&~",options); 15 Logger.log(response.getResponseCode()); 16 Logger.log(response) 17 18 19 var cookies = response.getHeaders()["Set-Cookie"]; 20 var headers = { "Cookie" : cookies }; 21 var options = { 22 method : "get", 23 headers : headers, 24 followRedirects: true, 25 }; 26 27 var responseSB = UrlFetchApp.fetch("https://scrapbox.io/api/pages/zzzzz/wwwwww/text",options); 28 Logger.log(responseSB);//Error401 29 30}

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

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

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

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

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

macaron_xxx

2018/11/16 00:06 編集

結果、取り出せたってことでクローズ?
tamanegine

2018/11/16 02:01

言葉足らずですみません。ブラウザのクッキーを流用しているため有効期限が切れるとアクセスできなくなります。実際に運用する際には認証から取り出しまで自動でやりたいのです。
guest

回答1

0

ベストアンサー

現時点では無理だと思います。

  • privateに対するapiがないので、おっしゃるようなブラウザのcookieをわたす操作が必要
  • GoogleIDでのログインはスクリプトでは難しそう(できるのかもしれないけど、ゼロから調べて書くのを無償でやる人はいないレベル)

privateへのAPIは要望があがっているので、もしかしたら将来的にはできるのかもしれないので、「現時点では」無理としています。

seleniumとかブラウザを自動操作するツールだったらもしかしたらとは思わなくもないですが、質問外なので。

投稿2018/11/28 02:52

papinianus

総合スコア12705

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

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

tamanegine

2018/11/28 16:22

ご回答ありがとうございます。 やはりスクリプトを利用してGoogleIDでのログインは難しいですね・・・ 逆に言えば悪意のあるBotを弾いてくれているとも考えることができますが・・・ 要望が上がっているという情報もありがたいです!ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問