Scribble at 2020-10-13 14:32:45 Last modified: unmodified

<?php

$fp = fopen( $_FILES['userfile']['tmp_name'], "r" );

$csv = array();

while ( ( $csv[] = fgetcsv( $fp ) ) !== false )

{

;

}

fclose( $fp );

$lines = array();

$lines[0] = 'Subject,Start Date,Start Time,End Date,End Time,Description,Location' . "\n";

foreach( $csv as $line )

{

if ( ! is_array( $line ) OR $line == $csv[0] )

{

;

}

else if ( count( $line ) > 8 )

{

if ( $line[8] != '' )

{

$lines[] = $line[8] . ',' . $line[3] . ',' . $line[4] . ',' . $line[5] . ',' . $line[6] . ',' . $line[9] . "\n";

}

}

}

header("Content-Type: application/octet-stream");

header("Content-Disposition: attachment; filename=google_calendar.csv");

header("Content-Transfer-Encoding: binary");

foreach( $lines as $line )

{

echo $line;

}

return;

急な話だが、G Suite を会社で導入した一環として、デスクネッツを解約して Google Calendar にスケジュールや設備予約の運用を切り替えることになった。そのため、研修用のビデオをこれから作ったりするのだが、ひとまず先行してデスクネッツのスケジュールを Google Calendar に移行したい。ただ、既に解約したサービスにオプションの連携機能を追加するのはどうかと思うので、デスクネッツからスケジュールを CSV ファイルにエクスポートできるため、これを利用したい。ただ、これをそのまま Google Calendar にはインポートできないのだった。

そこで、http://sa1g.blogspot.com/2010/04/desknet.html の記事を見つけた。インポートに必要なカラムを取り出して成形しなおせばインポートできるようだ。そこで、フォームから "userfile" という名前で送信した CSV ファイルを Google Calendar でインポートできる CSV に変換するコードを書いたのが、上記の結果である。参考にした記事は Python だったが、PHP として書き直し、会社のサイトで(プライベートなスケジュールも登録してる人がいるだろうから)フォームに CSV ファイルを送信して、変換した CSV をダウンロードできるようにしてある。

テストとして作ったカレンダーにインポートしてみたら問題なかったため、さきほど社内にリリースしてある。注意点として、UTF-8(BOMなし)で CSV をエクスポートすることと、自分のスケジュールだけにしたほうがいいということ(他の人のも一緒にやると膨大な数になる)だ。あと、できれば最近のスケジュールだけにするようお勧めする(当社では2012年くらいから使っているが、8年分を取り込むのはやめたほうがいい)。

  1. もっと新しいノート <<
  2. >> もっと古いノート

冒頭に戻る


※ 以下の SNS 共有ボタンは JavaScript を使っておらず、ボタンを押すまでは SNS サイトと全く通信しません。

Twitter Facebook