CSV取り込みの CSV を Excel で作成: hkob の雑記録 (102)

はじめに

hkob の雑記録の第102回目は、取り込みのための CSV ファイルを Excel で作成する方法を紹介します。また、99 で解説した「CSV をインポート」がなくなってしまったので、元々存在していた「CSV取り込み」について解説します。

「CSVをインポート」の削除

先日ビューに「CSV をインポート」という新機能を見つけました。しかし、今日座談会で説明しようと思ったら、機能がなくなっていました。

CSV をインポート (現在は削除)

いろいろ漁っていたら、データベースのフルページを表示したら、「CSV取り込み」という機能が存在していました。ただ、99 で説明した「CSV をインポート」とは実装が別のようで、こちらは ISO8601 の基本形式のものは取り込めませんでした。もしかしたら、あったらいいかもと気づいたインターンの学生などが実装したが、すでにこちらにあるので急遽削除したというものかもしれません。

フルページの CSV 取り込み

これだけで終わると悲しいので、座談会ではこの CSV を作成する Excel シートをリアルタイムに作ってみました。

CSV 作成用 Excel ファイル

テーブルを使っているので、CSV の列見出しはテーブルの外 (G1) にはみ出しています。G1 の数式は以下のようになっています。

列見出し

テーブルを使っているので、範囲の指定がわかりやすいですね。名前から status までの見出しを取り出して、TEXTJOIN しています。

=TEXTJOIN(",", TRUE, テーブル1[[#見出し],[名前]:[status]])

データ自体は以下のようになっています。

データ加工の数式

日付の部分だけ ISO8601 の拡張形式になるように成形しています。また、Excel では TRUE, FALSE が大文字になってしまうので、小文字に変換しています。

=LET(
d, [@日付],
cond, INT(d) = d,
format, IF(cond, "", "THH:mm:ss"),
add_str, IF(cond, "", "+09:00"),
TEXTJOIN(",", FALSE, [@名前], TEXT([@日付], "yyyy-MM-dd"&format) & add_str,
 [@親アイテム], IF([@check], "true", "false"), [@user], [@status])
)

これで G 列をコピーして「列1」の行を削除すれば CSV の出来上がりです。

名前,日付,親アイテム,check,user,status
A-5,2025-04-23,A,true,Hiroyuki KOBAYASHI,進行中
A-6,2025-04-30T12:30:00+09:00,A,false,,完了
B-5,2025-05-31,B,true,,未着手
B-6,2025-06-13T10:00:00+09:00,B,false,,進行中

おわりに

ics の記事同様 Excel だと連続データが作りやすいのでタスクの一括登録なども便利だと思います。CSV だと日付範囲が設定できないのが面倒ですね。締切系のものだと使いやすいかもしれません。実際の動作は Notion 座談会で説明しているので、是非みてください。

hkob.notion.site