Googleスプレットシートのデータを、WordPressのMySQLにコピーする方法を説明します。
#スプレットシートのデータをWordPressのMySQLにコピーする方法
PHPファイルでまるっと処理しますが、スプレットシートを公開してJSONファイルでデータを取得可能にした上で、WordPressのサーバからJSONを取得しにいって、MySQLにデータを流し込んでいくというのが大まかな流れです。
#前提(データセットとスプレットシートの下処理)
【例として扱うデータセット】
過去記事でも扱っているGoogleフォームで募った会議参加者の情報を管理することを例にあげます。
(参考)
今回扱うデータはこちらにて公開しておりますので、必要に応じてコピペして使ってください。データセットとして{image, name, birthplace, performance}の4つを扱います。
WordPress側の独自テーブルの作成にあたっては、必要に応じて以下を参照してください。wp_member_list
という独自テーブルを作成しています。
【スプレットシートの公開】
スプレットシートに外部からアクセスできるように公開する必要があります。(取り扱うデータの観点から、公開先を限定する必要があればSpreadSheet API
を活用してください。)
その上で、スプレットシートをJSONで取得できるURLを作成します。公開したスプレッドシートのIDを、黄色下線部の部分
に指定してください。
きちんとJSON取得用のURLになっていると、ブラウザでアクセスした際にスプレットシートの結果が返ってくることが確認できます。
#データをコピーするPHPスクリプト
以下のPHPコードにて、スプレットシートからデータ取得を行って、MySQLへデータを格納します。
<?php
require_once(dirname(__FILE__) . "../../../../wp-load.php"); //実行環境に合わせてパスを設定
// スプレットシートからJSONの値を取得
$data = "https://spreadsheets.google.com/feeds/list/1SZCuyk2H7FBOxoeLp93imOlUxjBu2gBFhUpHk_PVaBc/od6/public/values?alt=json";
$json = file_get_contents($data);
$json_decode = json_decode($json);
$names = $json_decode->feed->entry;
global $wpdb;
// スプレットシートの行ごとに処理を繰り返す
foreach ($names as $name) {
// JSONからそれぞれの値を取り出す
$m_image = $name->{'gsx$image'}->{'$t'};
$m_name = $name->{'gsx$name'}->{'$t'};
$m_birthplace = $name->{'gsx$birthplace'}->{'$t'};
$m_performance = $name->{'gsx$performance'}->{'$t'};
// JSONから取り出した値を独自テーブル(member_list)へinsertする
$wpdb->insert($wpdb->member_list, array(
'image' => $m_image,
'name' => $m_name,
'birthplace' => $m_birthplace,
'performance' => $m_performance
), array('%s', '%s', '%s','%s',));
}
return;
正しく実行できていれば、準備しておいた独自テーブル(WordPressのホスティングサーバのMySQL内)の中に、スプレットシートから取得したデータが格納されていることが確認できると思います。
上手くいかない場合は、スプレットシートの公開設定や過去記事に記載したWordPressのMySQLで独自テーブルを設定する方法について確認してみてくださいね。