AccessのデータをGoogleスプレッドシートに自動で連携するには様々な方法が考えられます。
その中で、私が実務で採用した、私的に最も単純で理解しやすい方法を紹介します。
(ちなみに、私はこの方法を活用して、毎日深夜に 1.基幹システムからデータを抽出し、2.スプレッドシートに連携し、3.Googleグループのメンバー登録・削除を行う という作業を自動化しました。)
なお、この記事で紹介する方法を使うには、AccessおよびGoogleドライブアプリがインストールされたWindows PCが必要です。
Accessクエリでデータ抽出
まず、目的のデータを抽出するためのAccessのクエリを作成してください。
(テーブルのデータを全く加工せずそのまま使いたい場合は、この工程は飛ばしてOKです)

AccessマクロでCSV出力
次に、クエリの抽出結果をCSV出力するマクロを作成します。(ここでいう「マクロ」はVBAのことではありません。簡単なのでご心配なく)
以下を参考に、マクロを作成してください。


③テキストのインポート/エクスポートの設定は下記を参考にしてください。
変換の種類 | 区切り記号付きエクスポート |
テーブル名 | CSV出力するクエリ(またはテーブル)の名前 |
ファイル名 | CSVファイルの出力先。Googleドライブアプリで同期しているフォルダを選ぶ。 出力先フォルダパス\出力ファイル名 とする |
フィールド名の設定 | CSVファイルの1行目を項目名にしたい場合は「はい」 |
コードページ | 65001: Unicode (UTF-8) * SJISも可です。その場合、Google Apps ScriptのコードでSJISを指定する必要があります。(後述します) |

保存したマクロ(この例では、M_社員情報CSVエクスポート)をダブルクリックして実行してみると、CSVファイルが出力され、Accessは自動的に終了します。


取り込み先スプレッドシートにスクリプトを追加
続いて、データ取り込み先のスプレッドシートに、スクリプトを追加します。
取り込み先のスプレッドシートを開き、スクリプトエディタを起動してください。
拡張機能メニューより、Apps Scriptを起動します。

あらかじめ入力されているコード(myFunction)を削除し、当記事のコードを貼り付けます。
貼り付け後、保存してください。

貼り付けるコードは、下記の記事のものをそのまま利用できます。
実際に、CSVファイルがスプレッドシートに取り込まれるかテストしてみましょう。
一旦、スプレッドシートを白紙にしたうえで、スクリプトエディタの▷実行ボタンを押してみてください。
「承認が必要です」というダイアログが表示されますので、権限を確認 をクリックします。
* この部分の解説画像は、他の記事から流用しているため、実際のものと若干異なる場合があります。

このスクリプトを使うGoogleアカウントを選択します。

(この画面が表示された場合のみ)左下の 詳細 をクリックします。

(この画面が表示された場合のみ)左下の プロジェクト名(安全ではないページ)に移動 をクリックします。

右下の 許可 をクリックします。

スプレッドシートを見ると、ちゃんとCSVからデータが取り込まれていることが確認できると思います。
AccessのCSV出力を自動化する
ここまでの作業で、AccessのデータをCSV出力し、スプレッドシートに取り込む処理を手動で実施できるようになりました。
続いて、これが毎日夜間に行われるように自動化していきます。
まずは、Accessからのデータ出力を、Windowsのタスクスケジューラを使って自動化します。






操作タブの設定内容は下表を参考にしてください。
プログラム/スクリプト | "MSACCESS.EXEのパス(後述)" 例: "C:\Program Files\Microsoft Office\root\Office16\MSACCESS.EXE" |
引数の追加 | "アクセスファイルのパス" /x "マクロの名前" 例: "C:\Users\taro\Documents\社員データ.accdb" /x "M_社員情報CSVエクスポート" |
Accessの実行ファイルの場所がわからない場合、以下のように調べることができます。
まず、Accessを起動している状態で、タスクマネージャーを起動します。(キーボードのctrlとshiftとescを同時に押す)
タスクマネージャー内でMicrosoft Accessを探し、右クリック→プロパティ



以上で、AccessでのCSVファイル出力を自動化することができました。
なお、タスクの作成画面では、全般、トリガー、操作の3つのタブの設定を行いましたが、条件、設定タブでも詳細な設定を行うことができますので、必要に応じて確認・設定してみてください。
スプレッドシートのCSV取り込みを自動化する
スプレッドシートにCSVを取り込むスクリプトも、トリガー機能を使うことで、時間を指定して自動実行させることが可能です。


Google Apps Scriptの日付ベースのタイマーによる時間起動は、細かい時間を指定することができませんので、多少ズレても問題ない時刻を選択してください。

これで、スプレッドシートへの取り込みも自動化することができました。
以上で、1.AccessからのCSV出力、2.Googleドライブへのアップロード、3.スプレッドシートへの取り込みが自動化できました。
コメント