アイデアの甕

アイデアを放り込んでおくと甕は腐臭を発しない

WordPressプラグイン「Contact Form 7」を「Googleスプレッドシート(Google Sheets)」と連携

The Ultimate Guide to Google Sheets: Everything you need to build powerful spreadsheet workflows in Google Sheets (Zapier App Guides Book 7) (English Edition)

 

Googleが提供する「Googleスプレッドシート」。要はMicrosoftのExcelで行えるような表計算ソフトですが、これでデータ管理をすると共有の設定など柔軟にできて便利。

 

またCMSとして世界中で活用されるWordPress(ワードプレス)。プラグインを活用すればその機能はガンガン拡張されるわけですが、フォーム作成といえば「Contact Form 7」が第一候補として挙がるはず。

 

「Contact Form 7」ではウェブサイト訪問者に夜フォーム送信と同時に入力内容をメール送信するか、もしくは拡張ソフトを導入してデータベースに保存することができます。しかしもし、「Contact Form 7」と「Googleスプレッドシート」を連携することができれば…これはもう、管理運用上非常に有用なツールになります。

 

もちろん、そう考えた方は過去にも大勢おられるわけで。

 

 

 

 

2014年に開発されたプラグイン

「Contact Form 7」と「Googleスプレッドシート」の連携用WordPressプラグインとして、検索に引っかかってくるのはこちら。「Contact Form 7 to SpreadSheet 」。

 

www.msng.info

 

はてブユーザーにも絶賛されています。

 

b.hatena.ne.jp

 

これが2015年ごろのお話。ちなみに今日は2017年2月9日木曜日。

 

日進月歩のWeb業界で、2年3年という歳月は多くの技術を陳腐化させるのに十分な期間です。

 

WordPressがメジャーアップデートされるにとどまらず、基幹技術であるPHPですらそのバージョンをメジャーアップデートしていたりします。

 

今、これを使うのはちと心許ない。

 

新参プラグイン

では新しいのはどうか。

 

CF7 to Spreadsheet

「CF7 to Spreadsheet」というプラグインがありました。「CF7」は「Contact Form 7」の略です。

 

本日(2017年2月9日)の情報。

 

Requires: 4.4 or higher
Compatible up to: 4.6.3
最終更新: 1か月 ago
有効化済みインストール: 10+

(参照:CF7 to Spreadsheet — WordPress Plugins

 

最新のWordPress 4.7.2というバージョンには対応していません。

 

プラグイン自体はバージョン1.0で、最近登録されたばかり。

 

実はこれを試してみたのですが、別のプラグインとコンフリクトを起こしまして…の顛末は以下。

 

 

bukki.hatenablog.com

 

そこそこ簡単に導入できるのですが、更新頻度の問題や上記エラーがあるため、とりあえず「次善の策」ということで現在は利用していません。

 

CF7 Spreadsheets

また別のプラグインとして「CF7 Spreadsheets」があります。

 

要件: 4.7 以降
最新の対応バージョン: 4.7.2
最終更新: 3週間前
有効化済みインストール: 10 未満

(参照:CF7 Spreadsheets — WordPress Plugins

 

本日現在の最新版に対応。インストール数は少ないものの、現在1.0.4とバージョンを重ねている模様。

 

しかしこれ、他のプラグインと違って“玄人向け”な仕様となっていまして。

 

「権限付与にGoogleのAPIを利用するから、Googleの開発者用サイトに自分で登録してkeyを入手し、登録してくれよな!」

 

おそらく、WordPressプラグイン開発者にとってAPIのキーを登録してトークンをうんたらかんたらという作業は日常過ぎてどうとも意識されないのかもしれませんが、やや、やややや上級者向けというか、ちょっとそこにハードルあるのどうなん?的な意識が拭えず使用をあきらめ。

 

実は他の同類プラグインでは「シート」を用意し、適切に「先頭行」を設定しないとエラーを吐く仕様が多いようですが、このプラグインではそうした“細かい”作業が指定されていません。シートのURLとidを指定するだけ。

 

実際に試したわけではありませんが、もしかすると最初のハードルさえ超えてしまえば最も柔軟な運用が可能なのかもしれない…と思ったり。まぁ試す気もあまりないのですが。

 

CF7 Google Sheets Connector(本命)

ではどうするか、と言えば「CF7 Google Sheets Connector」が候補に挙がります。

 

Requires: 3.6 or higher
Compatible up to: 4.7.2
最終更新: 1か月 ago
有効化済みインストール: 500+

(参照:CF7 Google Sheets Connector — WordPress Plugins

 

インストール数500以上という数字は少ないながら、おそらく2017年2月現在で最も使われている類似プラグインとなるのではないかと。

 

「CF7 Google Sheets Connector」

先述の過去記事では、「CF7 Google Sheets Connector」がエラーを出してしまった例を書きました。

 

他のプラグインとのコンフリクトが原因だったのではないか?、と。

 

しかし、もしかすると違うのかも?

 

f:id:bukki:20170209161604p:plain

 

「Get Code」でGoogle Sheetsへのアクセス権を付与し、トークン(?)コードを入手。

 

テキストボックスにコピペして「Save」しようとすると「Access code Can't be blank」のエラー。いや、ブランク(空白)ちゃうし(上の画像は空白にしてます…)。

 

ちなみに「Debug Log」を「View」すると

 

Error fetching OAuth2 access token, message: 'invalid_grant' :: 400

 

こんなエラーが出ていました。権限が不正だからアクセスムリぽ。

 

うーむ、困った。一旦アクセス権を解除して、再度同様の操作をしてもダメ。プラグインの再インストールをしてもダメ。どうしたものか。

 

しかし気になるのはテキストボックス内の「Currently Active」の表記。「現在アクティブ状態」ってどういうことやねんと混乱。エラー出してたん違うんか…?

 

この状況で一旦諦めていたわけです。

 

英語のサポートフォーラムでも、同様の問題が議論されています。

 

Topic: Google Auth – invalid_grant « WordPress.org Forums

 

で、前回の記事では他のプラグインとの連携不備を疑ったわけですが…。

 

Currently Active

連携の不備ならばこれ、一方のプラグインを停止・無効化してもう一度同じことを行えばエラー解消?と思い実行。しかし同じ表示が出てくるのみ。

 

と、いうことは。

 

「Google_Client」クラスの問題に関係はないのかもしれない。

 

と、いうよりも。

 

実は「Currently Active」は字義通りの意味なのかもしれない。

 

と、いうわけで。

 

実際に新規フォームと新規シートを作って連携を試みました。

 

やはり(?)エラー

さぁ連携設定を行い、いざ送信!…が、一向にシート側に入力内容が表示されません。

 

先程見たエラーログにはこんな表示(一部改変)が。

 

9 2月 2017 xx:xx:xx PHP 7.0.7Array

(略)

[ERROR_MSG] => Error in Google Request
[TRACE_STK] => #0 /home/

(略)

 

やっぱアカンか…。

 

解決!

いや待てよと。「CF7 to Spreadsheet」を使っていた時には、カラムに指定項目を入力しなさいよという指定があったなと。思い出しまして。

 

よくよくプラグインのページを見てみると、やはり先頭行には指定の項目を入力せよとのお達しが。

 

ja.wordpress.org

 

In Google Sheets
* In the Google sheets tab, provide column names in row 1. The first column should be "date". For each further column, copy paste mail tags from the Contact Form 7 form (e.g. "your-name", "your-email", "your-subject", "your-message", etc).
* Test your form submit and verify that the data shows up in your GoogleSheet.

 

Googleスプレッドシートの設定

*Googleスプレッドシートタブの1行目に列名を与えます。1列目は"date"にすべきです。その他の列名はContact Form 7で用いるメールタグ(例:"your-name", "your-email", "your-subject", "your-message", その他)をコピペします。

*フォーム送信をテストし、Googleスプレッドシートにデータが反映していることを確かめてください。

 

できました。指示通り、先頭行にメール用のタグと同じ文字列([]は不要)を入力しておけば、フォーム送信と同時にデータが共有されるようです。

 

もちろんその他の注意事項も読み込み、ファイル名、シート名も適切に設定、登録してください。

 

コード入力時にエラーが表示される原因はよく分かりませんが、やはりアクティブな状態として連携が完了していたようです。

 

すばらすばら。

 

これで心置きなくフォームからリードを獲得してウハウハ出来ますね。ウハウハ。ただ、エラーログには個人情報漏えいのリスクがあるようです。

 

個人情報漏えいリスク対策

連携ミスでエラー状態のまま送信するとエラーログに入力データがまるっと掲載されます。エラー内容だけでなく、個人情報がまるまる。もちろん個人情報を収集しないフォームならそれでもいいのかもしれませんが…。

 

ファイルのパーミッション設定をしっかりして不要なログは削除する対策をしないと、外からカンタンにアクセスできてしまいます。単なるテキストファイルなので、普通にブラウザにURLを入力するだけというお手軽さで。

 

くわばらくわばら。