GoogleカレンダーのCSVフォーマット|取り込みで弾かれない列の作り方
google カレンダー csv フォーマットで検索する人の目的はほぼ1つで、表計算で作った予定表をそのまま取り込みたい、という話だ。そして弾かれる原因もだいたい決まっていて、列名と日付の書式のどちらかに寄っている。この記事では公式ヘルプが示している列名と書式をそのまま並べ、どこで落ちているかを1つずつ切り分けられるようにする。
取り込めるのは予定の一部で、落ちる情報がある
先に前提を押さえておく。CSVでの読み込みは予定を丸ごと移す機能ではない。公式ヘルプは、予定を読み込んでもゲストと会議のデータは読み込まれないと明記している。招待者の一覧や会議リンクは引き継がれないので、参加者の管理まで移したい場合はCSVでは足りない。
もう1つ、繰り返しの予定も素直には移らない。CSVから定期的な予定を読み込むと、カレンダー上では繰り返しの予定にならず、1回限りの予定が並んだ状態になることがある。毎週の定例を50件の単独予定として持ち込むと、あとで時間を変えたいときに50件を触る作業が発生する。繰り返しを繰り返しのまま運びたいなら、CSVではなくiCalendar形式のファイルを使うほうが素直だ。
この2点を知らずに移行を始めると、取り込んだあとで足りないものに気づいて二度手間になる。CSVが向いているのは、これから入れる新しい予定を一括で流し込む用途と、単発の予定が大量に並ぶ表を運ぶ用途だと考えておくとよい。
必須の列は2つだけ。列名は英語で書く
列名は英語でなければ読み込めない。日本語の見出しを付けた表をそのまま保存しても弾かれる。公式ヘルプが挙げている列のうち、必須は先頭の2つだけで、残りは省略できる。
| 列名 | 必須 | 内容 | 例 |
|---|---|---|---|
| Subject | 必須 | 予定の名前 | Final exam |
| Start Date | 必須 | 予定の開始日 | 05/30/2020 |
| Start Time | 任意 | 開始時刻 | 10:00 AM |
| End Date | 任意 | 終了日 | 05/30/2020 |
| End Time | 任意 | 終了時刻 | 1:00 PM |
| All Day Event | 任意 | 終日かどうか | True または False |
| Description | 任意 | 説明やメモ | "50 multiple choice questions" |
| Location | 任意 | 場所 | "Columbia, Schermerhorn 614" |
| Private | 任意 | 限定公開にするか | True または False |
使える列はこの9つで、ここに無い項目を足しても読み込みの対象にはならない。担当者名や案件番号を持ち込みたいときは、Description の中に文章として入れておくことになる。
列の順番は先頭2つが先にあれば読み込めるが、ヘッダー行を1行目に置くことは守る。2行目以降が1件ずつの予定になり、空行を挟むと想定どおりに読まれないことがある。
日付と時刻は、日本語のヘルプの例をそのまま真似すると落ちる
いちばん多い落ち方がここだ。公式ヘルプの日本語版は、Start Date の例を「2020 年 5 月 30 日」と書いている。ところがヘッダー行の下の記入例には 05/30/2020 と書かれていて、英語版でも Start Date の例は 05/30/2020 で統一されている。日本語版の説明文は翻訳された表記で、そのまま入力する値ではない。
日本語版の「Googleカレンダーに予定を読み込む」の「.csv ファイルの作成と編集」には、”Start Date”の例として「例: 2020 年 5 月 30 日」と書いてあるので”2020 年 5 月 30 日“で試してみるとインポートできませんでした。 出典: jiyuukaitakusha.com
つまり月、日、年の順で、区切りはスラッシュで書く。時刻は 10:00 AM、1:00 PM のように午前と午後を後ろに置く形が例として示されている。表計算で日付を入力すると、セルの表示形式が勝手に和暦や YYYY/MM/DD に化けることがあるので、CSVとして保存したファイルをテキストエディタで開いて、実際に書かれている文字列を確かめるのが確実だ。
終日の予定は All Day Event に True を入れ、Start Time と End Time を空にする。時刻を入れたまま True にすると、意図とずれた予定になる。
カンマを含む値は引用符で囲む
場所や説明にカンマが入ると、そこで列が切れてしまう。公式ヘルプも、予定の詳細にカンマを含める場合はそのテキストを引用符で囲むよう案内している。例として挙げられている "Columbia, Schermerhorn 614" のように、値の全体を二重引用符でくるむ。
表計算からCSVとして書き出す場合、この囲みは自動で付くことが多い。手で書いたファイルや、他システムから吐き出したファイルを直すときは、カンマを含む行だけ崩れて、予定の名前だけ入って場所が消えるという症状が出る。1件だけ列がずれているように見えたら、まずカンマを疑う。
改行も同じで、説明に改行を入れたい場合は囲みが必要になる。取り込みの精度を上げたいなら、Description には改行を入れず、1行の文章にしておくほうが事故が少ない。
読み込む手順と、入る先のカレンダーの選び方
ファイルができたら、パソコンのGoogleカレンダーを開き、右上の設定から「インポート / エクスポート」を開く。「パソコンからファイルを選択」で保存したファイルを指定し、読み込んだ予定を追加するカレンダーを選んでからインポートを押す。
ここで見落としやすいのが、カレンダーの選択だ。既定ではメインのカレンダーに読み込まれる。仕事用の色分けの箱に入れるつもりで既定のまま押すと、個人のカレンダーに数十件が混ざる。大量に入れたあとで移すのは手間なので、押す前にカレンダー名を確かめる。
心配な場合は、先に3件ほどだけ書いた小さなファイルで試すと安全だ。列名と書式が通ることを確かめてから、本番のファイルを流す。読み込みそのものは取り消しの操作が用意されていないので、この確認の一手が効く。
書き出しはCSVでは出てこない
取り込みと対で誤解されやすいのが書き出しだ。Googleカレンダーから書き出されるファイルは .ics ファイルで、CSVは選べない。すべてのカレンダーを書き出すとZIPファイルが落ちてきて、中にカレンダーごとの .ics が入っている。読み込み直すときはZIPを展開し、1つずつ読み込む。
書き出しにはいくつか条件がある。Googleカレンダーのアプリからは書き出せず、パソコンのブラウザからだけになる。対象のカレンダーに「予定の変更および共有の管理」の権限が必要で、職場や学校のアカウントでは管理者が書き出しを制限していることもある。
つまり、CSVは入れる側の形式であって、出す側の形式ではない。予定をCSVの表として手元に持ちたい場合は、書き出した .ics を自分で読み替えるか、カレンダーの内容を別の方法で取り出すことになる。取り込みの前に現状を控えておきたいときも、控えはICSで取る形になる。
表計算で作るときの組み立て方
ゼロから作る場合、公式ヘルプはスプレッドシートエディタで新しいファイルを作る手順を案内している。1行目に Subject や Start Date といった列名を英語で並べ、2行目から1行に1件ずつ予定を書き、最後にCSV形式で保存するという流れだ。
実務では、すでにある予定表を直すことのほうが多い。既存の表をそのまま使うときは、余計な列を消すのではなく、読み込み用の別シートを作って必要な9つの列だけを写すほうが安全だ。元の表を壊さずに済み、書式を直すのもそのシートの中だけで済む。
日付の列は、日付として計算させるのではなく文字列として扱うと崩れにくい。セルの表示形式が和暦や YYYY/MM/DD に化けても、画面の表示だけが変わって中身は別の値になっていることがあるためだ。保存したCSVをテキストエディタで開き、実際に並んでいる文字を確かめる一手を挟むと、原因の切り分けが早くなる。
日本語のタイトルが記号の羅列に化けるときは、保存したときの文字コードを見直す。読み込みの前に3件だけのファイルで試す習慣を付けておけば、化けているかどうかもその場で分かる。
繰り返しや会議まで運ぶならICSを選ぶ
CSVで足りない部分を引き受けるのが iCalendar 形式だ。公式ヘルプは、iCalendar はカレンダーのデータを移すための標準の形式だと説明していて、読み込みのときにエラーが出た場合は書式を直せることがあるとしている。
ファイルの決まりは単純で、先頭行に BEGIN:VCALENDAR を置き、VERSION:2.0 や PRODID などのヘッダー情報を続け、最後の行に END:VCALENDAR を置く。その間に予定を並べ、1件ずつを BEGIN:VEVENT と END:VEVENT ではさむ。手で編集する必要があるときは、Googleカレンダーから書き出した .ics を例として開き、BEGIN:VEVENT の1行上までがヘッダーだと見分ける方法が案内されている。
CSVとICSの使い分けは、運ぶ情報の種類で決まる。単発の予定を表から大量に流し込むならCSV、繰り返しの規則や細かい属性まで保ったまま移すならICSだ。移行の目的が引っ越しなのか追加なのかを先に決めると、どちらを作るべきかが自然に決まる。
弾かれたときに見る順番
エラーの原因は数が限られているので、順番を決めて当たると早い。
- 列名が英語になっているか。Subject と Start Date の2つがあるか
- 日付が月、日、年のスラッシュ区切りになっているか
- カンマを含む値が二重引用符で囲まれているか
- 終日の予定で All Day Event が True のとき、時刻の列が空になっているか
- 1行目がヘッダー行になっていて、途中に空行が入っていないか
- 拡張子と保存形式がCSVになっているか
この6つを上から見ていくと、たいていの失敗はどこかに当たる。ここまで見て通らない場合は、1件だけのファイルを作り、Subject と Start Date の2列だけで試す。それが通るなら、落ちているのは足した列のどれかだと分かる。
読み込みが成功しても、予定の数が想定と合わないことがある。空行や、開始日が空のままの行が飛ばされている場合だ。読み込み後は件数を数えて、元の表の行数と突き合わせておく。
表で作るか、文章のまま渡すか
CSVの組み立てで時間を取られるのは、書式を整える作業そのものだ。9つの列に合わせて表を作り、日付の書式をそろえ、カンマを囲み、小さなファイルで試す。数百件をまとめて入れるなら、この段取りは十分に元が取れる。
一方で、件数が10件や20件なら話が変わる。列を整える時間のほうが長くなるからだ。この規模なら、メールや議事録の文章をそのまま貼って予定に起こす経路のほうが早い。Mac用のカレンダーアプリの中には、貼り付けたテキストから日時、場所、出席者、会議リンクを抜き出して下書きにするものがあり、入力の考え方は予定の入れ方に整理してある。書類や画面から一括で取り込む方式との違いはできることで確認できる。
次に手を動かす順番としては、まず列名を英語の9つに合わせ、日付を月、日、年のスラッシュ区切りに直し、3件だけのファイルで読み込みを試す。ここが通れば、残りは同じ書式で並べるだけになる。取り込みの向き先や運用の疑問はよくある質問にも整理してある。
よくある質問
CSVで必須の列はどれですか?
Subject と Start Date の2つだけです。残りの Start Time、End Date、End Time、All Day Event、Description、Location、Private は省略できます。ただし列名は英語で書く必要があり、日本語の見出しにすると読み込めません。
日付はどの書式で書けばよいですか?
公式ヘルプの記入例は 05/30/2020 で、月、日、年の順にスラッシュで区切る形です。日本語版の説明文にある「2020 年 5 月 30 日」という表記は翻訳された説明で、その文字列をそのまま入れると読み込みに失敗します。時刻は 10:00 AM のように午前と午後を後ろに置きます。
毎週の定例をCSVで入れると繰り返しになりますか?
なりません。CSVから定期的な予定を読み込むと、繰り返しの予定ではなく1回限りの予定が並んだ状態になることがあります。繰り返しを繰り返しのまま運びたい場合は、iCalendar形式のファイルを使うほうが確実です。
GoogleカレンダーからCSVで書き出せますか?
書き出せません。書き出されるのは .ics ファイルで、すべてのカレンダーを書き出すとZIPファイルとしてダウンロードされます。書き出しはパソコンのブラウザからのみ可能で、対象のカレンダーに予定の変更および共有の管理の権限が必要です。