ExcelとGoogleスプレッドシートを自動同期する方法【2025年最新ガイド】
社内でExcel派とGoogleスプレッドシート派が混在する環境は珍しくありません。営業部門は外出先からGoogleスプレッドシートでデータを入力し、経理部門はローカルPCでExcelを使って帳票を作成する、といった分業は効率的なように見えますが、実際には二重管理が原因で更新漏れや数値の不一致が頻発します。共有ファイルのコピーが増え、どれが最新なのか分からなくなることもあります。
そこで本記事では、ExcelとGoogleスプレッドシートを自動で同期する仕組みを詳しく解説します。2025年時点で利用できる最新の方法を紹介し、それぞれの特徴と導入手順、メリット・デメリットを整理しました。これから両ツールの連携を検討している方は、ぜひ参考にしてください。
なぜExcelとスプレッドシートの同期が必要なのか
データの分散と更新漏れを防ぐ
- 単一の「正しいデータ」を持つためには、複数ツール間で情報を同期させることが不可欠です。同じ内容を別々の形式で管理すると、手入力やコピー&ペーストに伴うミスが発生し、最新状態の把握も難しくなります。
- 営業が現場からGoogleスプレッドシートを更新し、経理がExcelで加工する場合、同期されていないと双方が異なる数字を参照してしまう危険があります。顧客への見積書や請求書の金額が食い違えば、信用問題にも発展しかねません。
コラボレーションと高度な分析の両立
- Googleスプレッドシートは同時編集やコメント機能が充実しており、複数人でリアルタイムに作業するのに向いています。一方、Microsoft Excelはピボットテーブル、Power Query、VBAマクロ、Office スクリプトなど高度な分析や自動処理に優れています。
- 互いの長所を活かすには、データを行き来させる仕組みが必要です。例えば、集計レポートはExcelで自動生成し、現場からの入力はGoogleスプレッドシートで受け付ける、といった運用が可能になります。
オンラインとオフラインの橋渡し
- ExcelファイルをOneDriveやSharePointに保存すればオンライン共同編集ができますが、インターネット接続がないと更新できません。対照的にGoogleスプレッドシートはオフラインモードがありますが、事前にデータをローカルに保存しておく必要があります。
- 双方向同期を構築すれば、ネットワーク環境に左右されないデータ更新が実現します。社内の情報共有基盤としても安定運用が可能です。
同期の主な方法
ExcelとGoogleスプレッドシートを同期させる方法は、用途や技術レベルに応じて大きく3つに分けられます。以下ではそれぞれの特徴と導入方法を詳しく見ていきます。
同期方法 | 特徴 | 難易度 | 想定用途 |
---|---|---|---|
Googleドライブ同期フォルダ | ExcelファイルをGoogleドライブに置くだけ。スプレッドシートとしても開けるが、マクロや複雑な関数は変換されない。 | ★☆☆ | 小規模運用、閲覧・編集頻度が低い場合 |
ノーコード自動化ツール | ZapierやPower Automateでイベントに応じてデータを同期。設定のみで導入でき、細かい条件分岐も可能。 | ★★☆ | 定期的なデータ転記、部門間連携 |
Google Apps Script / Microsoft Graph API | スクリプトを用いて自由度の高い同期処理を実装。CSVやAPI経由でデータをやり取り。 | ★★★ | 大規模運用、カスタマイズが必要な場合 |
1. GoogleドライブでExcelを共有
最も手軽な方法は、ExcelファイルをGoogleドライブに保存し、必要に応じてオンラインで開くやり方です。Googleドライブでは .xlsx
を直接表示・編集でき、簡易的な編集なら問題なく行えます。ファイルを右クリックして「Googleスプレッドシートとして開く」を選べば、新しいシートに変換して閲覧や軽い編集が可能です。
ただし、以下の制約に注意してください。
- 完全な相互互換ではない:ExcelのVBAマクロや一部の高度な関数(動的配列、OLEリンクなど)はスプレッドシートで動作しません。自動変換時に書式や計算式が崩れる場合があります。
- 編集権限が分かれる:Googleドライブ上のExcelファイルを複数人で同時編集する場合、ファイルのロック状態やバージョン管理に気を配る必要があります。Googleスプレッドシート形式に変換すればリアルタイム編集ができますが、再度Excelに戻す際は手作業でダウンロードし直す必要があります。
この方法は、閲覧や簡単な編集が中心で、データ更新頻度が低い環境に向いています。Excelの高度な機能を使いたい部署が限定されている場合は、他の同期方法を検討しましょう。
2. ノーコード自動化ツール(Zapier / Power Automate)
ZapierやMicrosoft Power Automateを使うと、プログラミング不要でExcelとGoogleスプレッドシート間の双方向同期を構築できます。どちらのサービスも「トリガー」と「アクション」を組み合わせてワークフローを作成する仕組みで、以下のような設定が可能です。
Zapierでの同期手順例
- アカウント作成:Zapierにサインアップし、MicrosoftアカウントとGoogleアカウントを連携します。
- 新規Zap作成:トップページの「Make a Zap」からワークフローを作成します。
- トリガー設定:Trigger AppにExcel(OneDrive)を選択し、トリガーイベントとして「新しい行が追加されたとき」や「行が更新されたとき」などを選びます。
- アクション設定:Action AppにGoogleスプレッドシートを選択し、行の追加や更新といった処理を設定します。対象シートや列のマッピングを行い、必要に応じて条件分岐(フィルタ)や複数ステップを追加します。
- 逆方向も設定:同様にスプレッドシート→Excelのワークフローを作成すれば双方向同期が実現します。
- テストと運用:Zapierのテスト機能でデータが正しく流れるか確認し、問題なければオンにします。
Zapierは複数のアプリを一括連携できるのが魅力ですが、無料プランではタスク数や更新頻度に制限があります。大量のデータ更新や高頻度な同期が必要な場合は有料プランを検討してください。
Power Automateでの同期手順例
Microsoft 365環境に既に馴染みがある場合は**Power Automate(旧称:Flow)**を使うと便利です。ExcelとGoogleスプレッドシート間のデータ同期フローをノーコードで作成できます。
- フローの作成:Power Automateポータルで「自動化されたクラウド フロー」を新規作成します。
- トリガーの選択:Excel(Business)コネクタから「行が追加または変更されたとき」を選び、対象のテーブルや列を指定します。ExcelファイルはOneDriveまたはSharePointに置く必要があります。
- アクションの追加:Google Sheetsコネクタから「行を追加」「行を更新」などを選択し、対象シートおよび列と紐づけます。スキーママッピングを行い、適宜条件式(IF文)や繰り返し処理を追加します。
- 双方向の同期:逆向きのトリガーとしてGoogle Sheets側の「変更時」コネクタを用い、Excel側のアクション(行の追加・更新)を設定します。
- 運用:フローを保存・実行すると、トリガーが発生するたびに自動的に双方のデータが同期されます。Power Automateは高頻度な同期や複雑な条件分岐に対応している反面、ライセンス体系が複雑なため事前にプランを確認しましょう。
3. Google Apps Script + Microsoft Graph APIによるカスタム同期
ノーコードツールでは細かな制御ができない場合、スクリプトを使った独自同期が有効です。ここではGoogle Apps Script(GAS)とMicrosoft Graph APIを組み合わせた例を紹介します。GASはJavaScriptベースでGoogleスプレッドシート上から利用でき、外部APIへのアクセスも可能です。
3-1. GASでスプレッドシートからExcel(OneDrive/SharePoint)へ書き込み
以下は、スプレッドシートのデータをCSV形式で出力し、OneDrive上のExcelファイルに上書きする例です。fileId
やAPIのエンドポイントは環境に合わせて設定してください。
// スプレッドシートの内容をCSVに変換し、OneDrive上のExcelファイルを更新する例
function syncToExcel() {
const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('データ');
const values = sheet.getDataRange().getValues();
let csv = values.map(row => row.map(cell => {
// ダブルクォーテーションが含まれる場合はエスケープ
const str = cell !== null ? cell.toString() : '';
return '"' + str.replace(/"/g, '""') + '"';
}).join(',')).join('\n');
// OneDriveのAPIエンドポイントとアクセストークンを指定
const url = 'https://graph.microsoft.com/v1.0/me/drive/items/EXCEL_FILE_ID/content';
const params = {
method: 'PUT',
contentType: 'text/csv',
headers: {
Authorization: 'Bearer ' + getAccessToken(),
},
payload: csv,
muteHttpExceptions: true,
};
const response = UrlFetchApp.fetch(url, params);
Logger.log(response.getResponseCode());
}
// OAuth2でGraph APIのアクセストークンを取得
function getAccessToken() {
const service = getOauthService();
if (!service.hasAccess()) {
throw new Error('Graph APIへのアクセスが許可されていません');
}
return service.getAccessToken();
}
function getOauthService() {
return OAuth2.createService('MicrosoftGraph')
.setAuthorizationBaseUrl('https://login.microsoftonline.com/common/oauth2/v2.0/authorize')
.setTokenUrl('https://login.microsoftonline.com/common/oauth2/v2.0/token')
.setClientId('YOUR_CLIENT_ID')
.setClientSecret('YOUR_CLIENT_SECRET')
.setScope('https://graph.microsoft.com/.default offline_access')
.setCallbackFunction('authCallback')
.setPropertyStore(PropertiesService.getUserProperties());
}
function authCallback(request) {
const service = getOauthService();
const isAuthorized = service.handleCallback(request);
if (isAuthorized) {
return HtmlService.createHtmlOutput('認証に成功しました。画面を閉じてください。');
} else {
return HtmlService.createHtmlOutput('認証に失敗しました。');
}
}
このスクリプトは、Graph APIの/drive/items/{item-id}/content
エンドポイントを使ってOneDrive上のExcelファイルを上書きします。アクセストークン取得のためにOAuth2ライブラリを導入する必要があり、事前にAzureポータルでアプリ登録を行ってclient_id
とclient_secret
を取得します。また、Excel側でCSVをインポートするマクロやPower Queryを設定しておけば、最新データを自動取り込みできます。
3-2. GASでExcelからスプレッドシートへ読み込み
逆方向の同期では、Graph APIからExcelのテーブルデータを取得し、スプレッドシートへ反映します。以下はその例です。
function syncFromExcel() {
const url = 'https://graph.microsoft.com/v1.0/me/drive/items/EXCEL_FILE_ID/workbook/tables/Table1/rows';
const params = {
method: 'GET',
headers: {
Authorization: 'Bearer ' + getAccessToken(),
},
muteHttpExceptions: true,
};
const response = UrlFetchApp.fetch(url, params);
const json = JSON.parse(response.getContentText());
const values = json.value.map(item => item.values[0]);
const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('データ');
sheet.clearContents();
sheet.getRange(1, 1, values.length, values[0].length).setValues(values);
}
この例では、Excelファイル内に「Table1」という名前のテーブルがあることを前提としています。Graph API経由でテーブルの行を取得し、スプレッドシートのデータを丸ごと置き換えます。運用時はデータ量に応じて処理分割や差分更新を実装するとよいでしょう。
4. CSVファイルを仲介するシンプルな同期
高度なAPI連携が不要であれば、CSVファイルのエクスポート/インポートを利用した同期も有効です。手順は以下の通りです。
- Googleスプレッドシートから
File > ダウンロード > Comma-separated values (.csv)
でデータをエクスポートします。またはGASのUtilities.formatCsv()
などで自動生成できます。 - 得られたCSVファイルをOneDriveまたはSharePointに保存し、Excelで外部データとしてインポートします。「データ > 外部データの取得 > テキスト/CSV」から読み込み、「プロパティ」で更新間隔を設定すると定期的に最新データに置き換わります。
- 逆方向に同期したい場合は、ExcelのテーブルをCSVに書き出し、Google Apps ScriptでDriveにアップロードし、スプレッドシート側で定期的に読み込む仕組みを作ります。
CSVはシンプルゆえに変換の失敗が少なく、プログラムやツールを問わず扱えるメリットがあります。ただしファイルを介するためリアルタイム性に欠ける点がデメリットです。日次や週次のバッチ更新で十分な業務なら適しているでしょう。
同期を成功させるためのコツ
- 一意のID列を追加する:双方のデータを突き合わせるために、顧客IDや注文番号など重複しない識別子を用意します。これがないと行の対応が難しくなります。
- テスト環境で検証する:本番データで同期を開始する前に、テスト用の小規模データで流れを確認します。想定外の列順やフォーマット違いがあれば事前に調整できます。
- バックアップを取る:スクリプトや自動化ツールを導入する際は必ず元データのバックアップを保持し、バージョン履歴を利用して復元できるようにしておきます。
- 権限管理を徹底する:GoogleドライブやOneDriveの共有設定を適切に行い、閲覧者が意図せずデータを削除・変更しないようアクセス権を細かく制御しましょう。
- 更新頻度と運用コストのバランス:リアルタイム同期が本当に必要か、日次または週次で良いのかを検討します。リアルタイム性を追求するとシステムが複雑になりコストも増えるため、業務ニーズに合った更新間隔を選びましょう。
まとめ
2025年時点でExcelとGoogleスプレッドシートを自動同期する方法は多岐にわたります。最も簡単なのはGoogleドライブにExcelファイルを置いて共有する方法ですが、互換性に制約があります。ノーコードツールのZapierやPower Automateを使えば、コードを書かずに双方向同期を構築できます。また、Google Apps ScriptとMicrosoft Graph APIを組み合わせれば、CSVを介さない柔軟なデータ連携が実現します。用途やチームのスキルレベルに応じて最適な方法を選択し、データ管理の効率化を図りましょう。
Excelとスプレッドシートの同期は、部門をまたいだデータ連携をスムーズにし、手作業による更新ミスを減らします。今回紹介した方法を活用して、自社の業務フローに合った最適な同期環境を構築してみてください。