1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

GoogleスプレットシートのデータをWordPressのMySQLにコピーする方法【PHPでまるっと処理】

Last updated at Posted at 2020-03-27

Googleスプレットシートのデータを、WordPressのMySQLにコピーする方法を説明します。

#スプレットシートのデータをWordPressのMySQLにコピーする方法
PHPファイルでまるっと処理しますが、スプレットシートを公開してJSONファイルでデータを取得可能にした上で、WordPressのサーバからJSONを取得しにいって、MySQLにデータを流し込んでいくというのが大まかな流れです。

#前提(データセットとスプレットシートの下処理)
【例として扱うデータセット】
過去記事でも扱っているGoogleフォームで募った会議参加者の情報を管理することを例にあげます。

(過去記事)
Googleフォームで取得した画像をスプレットシートで表示する方法【セル内に画像で表示】

(参考)
今回扱うデータはこちらにて公開しておりますので、必要に応じてコピペして使ってください。データセットとして{image, name, birthplace, performance}の4つを扱います。
Screen-Shot-2019-12-08-at-19.48.57.png

WordPress側の独自テーブルの作成にあたっては、必要に応じて以下を参照してください。wp_member_listという独自テーブルを作成しています。

(その他 参考記事)
WordPressのMySQL独自テーブルの作成と利用方法【wp-db.phpの更新必須】

【スプレットシートの公開】
スプレットシートに外部からアクセスできるように公開する必要があります。(取り扱うデータの観点から、公開先を限定する必要があればSpreadSheet APIを活用してください。)

wordpress_mysql_from_spreadsheet_01.jpg

その上で、スプレットシートをJSONで取得できるURLを作成します。公開したスプレッドシートのIDを、黄色下線部の部分に指定してください。

Screen Shot 2020-03-27 at 23.53.01.png

きちんとJSON取得用のURLになっていると、ブラウザでアクセスした際にスプレットシートの結果が返ってくることが確認できます。

wordpress_mysql_from_spreadsheet_02.jpg

#データをコピーするPHPスクリプト
以下のPHPコードにて、スプレットシートからデータ取得を行って、MySQLへデータを格納します。

sample.php
<?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内)の中に、スプレットシートから取得したデータが格納されていることが確認できると思います。

b_spreadsheet_demo_insert.php_03.jpg

上手くいかない場合は、スプレットシートの公開設定や過去記事に記載したWordPressのMySQLで独自テーブルを設定する方法について確認してみてくださいね。

1
0
8

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?