ソフラボの技術ブログ

仕事で使ったプログラミング、サーバー周りで役に立つこと、Webサービス開発に必要な技術情報、モバイル情報を書いてます。わかりやすく見やすくをモットーにしています。

GoogleスプレッドシートでGET/POST通信を行いコンテンツを取得する

f:id:shinsuke789:20150103164126p:plain

必要なもの

  • ネット環境
  • Google SpreadSheet

スクリプトの作成

1.Googleスプレッドシートを開き、ファイルメニュー「ツール」→「スクリプトエディタ」と選択します

f:id:shinsuke789:20150103163133p:plain:w230


2.スクリプトエディタのファイルメニュー「ファイル」→「新規作成」→「スクリプトファイル」を選択します

f:id:shinsuke789:20150103163139p:plain:w400

スクリプトファイル名は拡張子を除いて入力すると、自動的に「.gs」ファイルとして作成されます。

GET

// アクセス先
var url = "http://www.google.co.jp/"
// GETリクエスト
var response = UrlFetchApp.fetch(url);
// HTMLの結果を取得(引数のcharsetは設定したほうが良い)
var content = response.getContentText("UTF-8");

POST

// POSTデータ
var payload = {
  "user_id" : "userid",
  "password" : "pass",
  "submit" : "ログイン"
}
// POSTオプション
var options = {
  "method" : "POST",
  "payload" : payload
}

// アクセス先
var url = "http://hoge.jp/"
// POSTリクエスト
var response = UrlFetchApp.fetch(url, options);
// HTML結果を取得(引数のcharsetは設定したほうが良い)
var content = response.getContentText("UTF-8");

Cookie

// Request Cookie
// クッキー(複数ある場合、「;」で区切る
var cookie = "hoge=1234; foo=abcd";
// headersにCookieを設定
var headers = {
  "Cookie" : cookie
}
// リクエストオプションにheadersを設定
var options = {
  "headers" : headers
}
// リクエスト
var response = UrlFetchApp.fetch(url, options);


// Response Cookie
// レスポンスヘッダーからCookieを取得
var cookies = response.getAllHeaders()["Set-Cookie"];
for (var i = 0; i < cookies.length; i++) {
  Logger.log(cookies[i]);
}

コンテンツからの値の取得

取得したコンテンツから値を取得したい場合、Javascriptの「String.match(regex)」を使います。

var content = response.getContentText("UTF-8");
var id = content.match(/name="hoge_id" value="(.+)"/)[1];  

まとめ

ドキュメントが英語なので調べるのが結構大変でした。
英語は読めなくてもコードさえあればわかるので、今回はStackOverflowに大変お世話になりました。


簡単なスクリプトを書くだけでHTTP通信ができます。
ネット環境とGoogleSpreadSheetされあれば、開発ができてしまうのは魅力的です。


GoogleAppsScriptは、サーバーサイド言語ですのでサーバー側で実行されます。
fetch毎にサーバーのIPアドレスが変わる仕様のようで、セッションを維持する必要のあるサイトへ接続し、一連の処理を行おうとしても、IPアドレスが変わっているため同一セッションと扱われないので注意してください。


Javascriptに似た言語」なのでJavascriptで使えるものが全て使えるわけではないです。
今回は、joinが使えないことがわかりました。


やはりスクリプト言語ということで、多機能ではないようです。
本格的な処理をさせたい場合、Javaなどの通常の言語を使用することをおすすめします。

貴重なGoogleAppsScript書籍

誰でもできる!  GoogleApps導入ガイド

誰でもできる! GoogleApps導入ガイド

Google クラウドスクリプティング Google Apps ScriptによるGoogleパワーアップ活用ガイド

Google クラウドスクリプティング Google Apps ScriptによるGoogleパワーアップ活用ガイド

Google Appsでつくる仕事便利ツール ?Google Apps Scriptで実践構築?

Google Appsでつくる仕事便利ツール ?Google Apps Scriptで実践構築?