以前、「GoogleスプレッドシートからGoogleカレンダーにインポート」という記事を書きました。
コメントで「終日データをインポートする方法を教えろ」というリクエストをいただきましたので、調べてみました。
通常は「createEvent」というメソッドを使うのですが、終日データの場合は「createAllDayEvent」を使います。
Class Calendar – Google Apps Script — Google Developers
「タイトル」「日付」「説明」の三つの項目をインポートする方法を紹介します。基本的な手順については「GoogleスプレッドシートからGoogleカレンダーにインポート」を参照して下さい。
スプレッドシート
次のように作ります。
コード
コードは次の通りです。
function createAllDayEventFromSheet() {
var mytitle, mydate, mydescription;
var objEvent;
var sheet = SpreadsheetApp.getActiveSheet();
var objCalendar = CalendarApp.getDefaultCalendar();
for (var i = 2; i <= sheet.getLastRow(); i++) {
mytitle = sheet.getRange(i, 1).getValue();
mydate = sheet.getRange(i, 2).getValue();
mydescription = sheet.getRange(i, 3).getValue();
objEvent = objCalendar.createAllDayEvent(mytitle, mydate, {
description: mydescription
});
}
}
var mytitle, mydate, mydescription;
var objEvent;
var sheet = SpreadsheetApp.getActiveSheet();
var objCalendar = CalendarApp.getDefaultCalendar();
for (var i = 2; i <= sheet.getLastRow(); i++) {
mytitle = sheet.getRange(i, 1).getValue();
mydate = sheet.getRange(i, 2).getValue();
mydescription = sheet.getRange(i, 3).getValue();
objEvent = objCalendar.createAllDayEvent(mytitle, mydate, {
description: mydescription
});
}
}
コメント
この度はご教授頂いてありがとうございました。
お伺いをしてから数日がたってしまいお礼の返事が遅くなってすいませんでした。今何とかできました。本当にありがとうございます。
自分が行いたかったスクリプトは下記の通りです。
function createEventFromSheet() {
var sheet, i, myevent, mystart, myend, mylocation,mydescription;
var sheet = SpreadsheetApp.getActiveSheet();
for(var i = 2; i <= sheet.getLastRow(); i++) {
myevent = sheet.getRange(i, 1).getValue();
mystart = sheet.getRange(i, 2).getValue();
myend = sheet.getRange(i, 3).getValue();
mylocation = sheet.getRange(i, 4).getValue();
mydescription = sheet.getRange(i, 5).getValue();
CalendarApp.getDefaultCalendar().createEvent(myevent, mystart, myend, {location:mylocation,
description: mydescription
});
}
}
もしこれに終日をプラスするとしたらどういうスクリプトを組めば宜しいでしょうか?
>セゾンさん
Googleカレンダーでは「何日から何日までの終日」という設定ができますが、調べてみたところ、同様の処理を行うメソッドが見付かりませんでした。
申し訳ありません。
いつもお早いご回答ありがとうございます。
ちなみにグーグルカレンダーをスプレッドシートにエクスポートという事は可能ですか?調べてみたのですが特に記述がなくできないのかなと判断している次第ですが…いかがでしょうか?
>セゾンさん
Googleカレンダーからスプレッドシートに直にエクスポートする方法は分かりません。
Googleカレンダーには「カレンダーをエクスポート」という機能があって、これによりiCalendarファイルというテキストファイルが取得できます。
私はiCalendarファイルをTSVファイル(タブ区切りテキスト)に変換するツールを自作したので、これを使っています。TSVならばスプレッドシートにインポートできます。
私の作ったツールは出来がよくないので公開していません。
>セゾンさん
GoogleカレンダーからExcelにデータを移行する方法について記事を書いてみましたので、よろしければ確認ください。
http://stabucky.com/wp/archives/6208
初めまして。前回のgoogleスプレッドシートからカレンダーにインポートの時からお世話になって大変助かっております。
しつもんですがgoogleカレンダーのスケジュール設定のメモ欄に記入し、一括でインポートしたいのですが出来るのでしょうか?
またアラーム設定もスプレッドシートから設定して一括で管理、インポート出来るように出来るのでしょうか?
よろしかったらご教授願います。
>たかさん
「メモ欄」というのは「説明」のことでしょうか。それならばdescriptionとしてインポートできるかもしれません。
「アラーム」というのは「通知」のことだと思いますが、これは設定項目が見付かりませんでした。
すべてご指摘の通りです。通知時間の設定が出来ないのはザンネンです。
今回はありがとうございました!
はじめまして,スプレッドシートでコレクションを管理しようと考え,検索してこちらのサイトに辿り着きました.
スクリプトを実行しなければ,スプレッドシートに追加しただけでは,カレンダーに追加はされないのでしょうか.
その都度スクリプトを実行すると重複したものがいくつもできてしまうのですが…
ご教示いただけると幸いです.
>mythoさん
ご認識のとおり、スプレッドシートに追加しただけではカレンダーには追加されません。
同期でなくインポートのイメージです。
スプレッドシートに「カレンダーに追加」のような列を作り、追加したら「済」などの文字もしくは追加日をセットし、次回以降は追加しない、という方法が考えられます。