Googleカレンダーの内容をスプレッドシートに簡単に書き出せる方法が知りたいな。
GASを記載する場所
GASを作成するには、スプレッドシートの画面上部にて [拡張機能] ー [Apps Script] を選択
Googleカレンダーをスプレッドシートに書き出す方法
ママ
下のプログラミング記述をオレンジの部分にコピー
※ function myFunction(){}は削除。
変更が必要な箇所を修正する。
1)GASを貼り付け
function callender() {
// スプレッドシートの読込
const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('「※シートの名前」');
// カレンダーをIDで読み込む
const cal=CalendarApp.getCalendarById('「※○○@gmail.com」');
// カレンダーのイベントの期間を指定
const startTime = new Date('2022/01/01 00:00:00');//取得したい日付の開始日
const endTime = new Date('2022/02/01 00:00:00'); //取得したい日付の終了日
const event = cal.getEvents(startTime,endTime);
// イベントをスプレッドシートへ出力
var j = 1 ;
for(var i=0;i<event.length; i++){
sheet.getRange('a'+j).setValue(event[i].getTitle());//タイトル
sheet.getRange('b'+j).setValue(event[i].getStartTime());//開始時刻
sheet.getRange('c'+j).setValue(event[i].getEndTime());//終了時刻
j++;
}
}
2)修正箇所を修正
「※シートの名前」出力したいシート名を記載
「※○○@gmail.com」は、Googleカレンダー所有のメールアドレスを記載
取得したい日付を変更する
3)実行ボタンを押下(右端にある、デプロイが終わってない方は済ませてから、実行を押す必要がある)
同じ日付の予定は、1行にできないかな。
こちらだと、同じ日付を1行にカンマ区切りで表示することができます。
同じ日付の予定を1行に書き出す方法
function callender() {
// スプレッドシートにカレンダーの内容を読込
const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('シートの名前「※シートの名前」');
// 結果を出力するシート名を指定
let sheet2 = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('「※シートの名前2」');
// カレンダーをIDで読み込む
const cal=CalendarApp.getCalendarById('「※○○@gmail.com」');
// カレンダーのイベントの期間を指定
const startTime = new Date('2022/01/01 00:00:00');//取得したい日付の開始日
const endTime = new Date('2022/02/01 00:00:00');//取得したい日付の終了日
const event = cal.getEvents(startTime,endTime);
// イベントをスプレッドシートへ出力
var j = 1 ;
for(var i=0;i<event.length; i++){
sheet.getRange('a'+j).setValue(event[i].getTitle());//タイトル
sheet.getRange('b'+j).setValue(event[i].getStartTime());//開始時刻
sheet.getRange('c'+j).setValue(event[i].getEndTime());//終了時刻
j++;
}
//編集(同じ日付の予定をカンマ区切りで1行にする)
// A列とB列のデータを二次元配列として取得
let array = sheet.getRange('A:B').getValues();
const lastRow = sheet.getRange(sheet.getMaxRows(),1).getNextDataCell(SpreadsheetApp.Direction.UP).getRow();
// 結果を格納する配列
let result = [];
// 日付をキーとしたオブジェクトを作成 (連想配列)
let obj = {};
for (let i = 0; i < lastRow; i++) {
// 日付
let date = Utilities.formatDate(array[i][1], 'JST', 'yyyy-MM-dd'); // B列の値;
//内容
let content = array[i][0];
// オブジェクトに日付が存在しない場合は、新たにキーと値を追加
if (!obj [date]) {
obj [date] = [content];
} else {
// オブジェクトに日付が存在する場合は、値の配列に内容を追加
obj [date].push (content);
}
}
// オブジェクトのキーと値を配列に変換
for (let key in obj) {
let value = obj [key];
// 値の配列をカンマ区切りの文字列に変換
let str = value.join (`,`);
// 結果の配列に日付と文字列を追加
result.push ([key, str]);
}
// 結果を出力する
sheet2.getRange(2, 1, result.length, result[0].length).setValues(result);
}
「※シートの名前」出力したいシート名を記載
「※シートの名前2」出力して編集した結果を表示するシート名を記載
「※○○@gmail.com」は、Googleカレンダー所有のメールアドレスを記載
取得したい日付を変更する
[実行]をクリックすると、スプレッドシートに出力される。
ママ
「承認が必要です」が表示された場合は、こちらを参照に作業をしてね
コメント