Zidooka

GoogleMAPのバックアップファイル(JSON)形式は単純にCSVに変換して、取り込めば履歴を閲覧可能。方法を解説。

※ この記事の内容について、業務・開発上お困りの場合は個別に対応できます(5,000円〜)。

Google Mapsの位置情報履歴をバックアップとして保存する際、JSON形式のファイルとしてダウンロードすることができます。しかし、このJSONファイルはそのままでは読みづらいため、CSV形式に変換して閲覧するのが便利です。この記事では、Google MapsのバックアップファイルをCSVに変換する方法と、スプレッドシートでの扱い方について解説します。

JSONファイルの構造

Google Mapsのバックアップファイル(JSON)は、以下のような構造になっています:

{
  "timelineObjects": [
    {
      "activitySegment": {
        "startLocation": { "latitudeE7": "start_latitude", "longitudeE7": "start_longitude" },
        "endLocation": { "latitudeE7": "end_latitude", "longitudeE7": "end_longitude" },
        "duration": { "startTimestamp": "start_time", "endTimestamp": "end_time" },
        "distance": "distance_value",
        "activityType": "activity_type",
        "confidence": "confidence_level"
      }
    },
    {
      "placeVisit": {
        "location": { "latitudeE7": "visit_latitude", "longitudeE7": "visit_longitude" },
        "duration": { "startTimestamp": "visit_start_time", "endTimestamp": "visit_end_time" },
        "placeConfidence": "place_confidence",
        "visitConfidence": "visit_confidence"
      }
    }
  ]
}

このJSONファイルには、位置情報の履歴が「timelineObjects」として含まれています。それぞれのオブジェクトは、「activitySegment」または「placeVisit」として保存されています。

CSV形式への変換

JSONファイルをCSV形式に変換するには、以下のようなヘッダーを使用します:

  • startLocationLatitude
  • startLocationLongitude
  • endLocationLatitude
  • endLocationLongitude
  • startTimestamp
  • endTimestamp
  • distance
  • activityType
  • confidence
  • visitLatitude
  • visitLongitude
  • visitStartTimestamp
  • visitEndTimestamp
  • placeConfidence
  • visitConfidence

手順

  1. JSONファイルを読み込む
  2. 必要なデータを抽出して、CSV形式に整形する
  3. CSVファイルとして保存する

Pythonを使用してこれを実現するサンプルコードは以下の通りです:

import json
import csv

# JSONファイルの読み込み
with open('backup.json', 'r') as file:
    data = json.load(file)

# CSVファイルの書き込み
with open('output.csv', 'w', newline='') as csvfile:
    fieldnames = [
        'startLocationLatitude', 'startLocationLongitude', 'endLocationLatitude', 'endLocationLongitude',
        'startTimestamp', 'endTimestamp', 'distance', 'activityType', 'confidence',
        'visitLatitude', 'visitLongitude', 'visitStartTimestamp', 'visitEndTimestamp',
        'placeConfidence', 'visitConfidence'
    ]
    writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
    writer.writeheader()

    for item in data['timelineObjects']:
        if 'activitySegment' in item:
            row = {
                'startLocationLatitude': item['activitySegment']['startLocation']['latitudeE7'],
                'startLocationLongitude': item['activitySegment']['startLocation']['longitudeE7'],
                'endLocationLatitude': item['activitySegment']['endLocation']['latitudeE7'],
                'endLocationLongitude': item['activitySegment']['endLocation']['longitudeE7'],
                'startTimestamp': item['activitySegment']['duration']['startTimestamp'],
                'endTimestamp': item['activitySegment']['duration']['endTimestamp'],
                'distance': item['activitySegment']['distance'],
                'activityType': item['activitySegment']['activityType'],
                'confidence': item['activitySegment']['confidence'],
            }
            writer.writerow(row)
        elif 'placeVisit' in item:
            row = {
                'visitLatitude': item['placeVisit']['location']['latitudeE7'],
                'visitLongitude': item['placeVisit']['location']['longitudeE7'],
                'visitStartTimestamp': item['placeVisit']['duration']['startTimestamp'],
                'visitEndTimestamp': item['placeVisit']['duration']['endTimestamp'],
                'placeConfidence': item['placeVisit']['placeConfidence'],
                'visitConfidence': item['placeVisit']['visitConfidence'],
            }
            writer.writerow(row)

スプレッドシートでのJSONデータの読み込み

Googleスプレッドシートで直接JSONデータを読み込むためには、Google Apps Scriptを使用します。以下の手順で実行できます:

  1. スプレッドシートを開く
  2. メニューから「拡張機能」 > 「Apps Script」を選択
  3. 以下のコードを貼り付ける
function importJSON() {
  var url = 'https://example.com/path/to/your/backup.json'; // JSONファイルのURL
  var response = UrlFetchApp.fetch(url);
  var json = JSON.parse(response.getContentText());

  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  var header = [
    'startLocationLatitude', 'startLocationLongitude', 'endLocationLatitude', 'endLocationLongitude',
    'startTimestamp', 'endTimestamp', 'distance', 'activityType', 'confidence',
    'visitLatitude', 'visitLongitude', 'visitStartTimestamp', 'visitEndTimestamp',
    'placeConfidence', 'visitConfidence'
  ];
  sheet.appendRow(header);

  var timelineObjects = json.timelineObjects;
  for (var i = 0; i < timelineObjects.length; i++) {
    var item = timelineObjects[i];
    if (item.activitySegment) {
      var row = [
        item.activitySegment.startLocation.latitudeE7, item.activitySegment.startLocation.longitudeE7,
        item.activitySegment.endLocation.latitudeE7, item.activitySegment.endLocation.longitudeE7,
        item.activitySegment.duration.startTimestamp, item.activitySegment.duration.endTimestamp,
        item.activitySegment.distance, item.activitySegment.activityType, item.activitySegment.confidence,
        '', '', '', '', '', ''
      ];
      sheet.appendRow(row);
    } else if (item.placeVisit) {
      var row = [
        '', '', '', '', '', '',
        '', '', '',
        item.placeVisit.location.latitudeE7, item.placeVisit.location.longitudeE7,
        item.placeVisit.duration.startTimestamp, item.placeVisit.duration.endTimestamp,
        item.placeVisit.placeConfidence, item.placeVisit.visitConfidence
      ];
      sheet.appendRow(row);
    }
  }
}

  1. 「ファイル」 > 「保存」でスクリプトを保存
  2. メニューから「実行」 > 「importJSON」を選択してスクリプトを実行

日付と曜日の抽出

 おそらくですが、日付が見にくいと思います。すこしtipsとして以下も書いておきます。スプレッドシートで日時データから日付や曜日を抽出するためには、以下の関数を使用します。

日付の抽出

例えば、startTimestampがA2セル(おそらく普通に上記で読み込むとM列になるはずですが、例示的に)にある場合、日付を抽出するには以下の関数を使用します:

=DATEVALUE(MID(A2, 1, 10))

曜日の抽出

同じく、startTimestampがA2セルにある場合、曜日を抽出するには以下の関数を使用します:

=TEXT(DATEVALUE(MID(A2, 1, 10)), "dddd")

これらの関数を使うことで、JSONデータから取り込んだ日時情報を日付や曜日に変換して、スプレッドシート上で簡単に管理できます。

まとめ

この記事では、Google Mapsのバックアップファイル(JSON)をCSVに変換する方法と、スプレッドシートで直接JSONデータを読み込む方法について解説しました。さらに、日時データから日付や曜日を抽出するためのスプレッドシート関数も紹介しました。これにより、Google Mapsの位置情報履歴をより簡単に閲覧・管理することができます。

Zidooka
Zidooka

この記事の内容、60分で一緒に解決できます。

「詰まって進めない」「社内で対応できない」など、状況を聞いて最短ルートを提案します。

初回5,000円〜/事前見積りで安心。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

あわせて読みたい記事