Googleカレンダーはオンラインの自分専用カレンダー
Googleカレンダー使っていますか?
分単位や日別でスケジュールを書き込むことができるオンラインのカレンダーです。
自身のカレンダーに書き込んだり、他人を招待したカレンダーを作ったりできます。
でも人手でスケジュールを書くのが楽なときとめんどくさい時があります。
その日あったニュースや出来事くらい自動でカレンダーに書き込みたいですよね?(←たぶん)
なので、その日日本であった検索トレンドを自動でカレンダーに書き込むスクリプトを書いてみました。
それも未来永劫にわたってひたすら書き込みます。
2000年を振り返ることもできるし、2010年を振り返ることができます。
これはオンラインだからできる代物です。
パソコン、スマホで見られるのが大きな魅力
昔は紙のカレンダーやスケジュール帳を使っていました。
ここには大きなデメリットがあるんです。
「期末テスト」や「病院」みたいなスケジュールだったら、紙のカレンダーに書き込む価値はあります。
一方で些細な出来事は紙のカレンダーに書き込むまでもないですよね?
でもGoogleカレンダーなら些細なことも書き込むに値します。
社会では何が話題になったのか?と振り返るためにカレンダーに書き込んでしまおう
1日前は
1週間前は
1か月前
1年前は
n年前は 社会で何が話題になったのか?
を振り返るのは新聞を保存しておくか、日記をつけておくことくらいしかありません。
そんな事毎日していたら大変です。
新聞の切り抜きを取っておくみたいなことはできません。
こんなこと2100年までしていたら大変ですよね?
なので自動化しちゃいましょう!!
Googleカレンダーは容量消費がないので、あらゆる時事ネタを記録してしまおう
ここからが真髄です。
毎日話題になった社会のトレンドをGoogleカレンダーに書き込みます。
function getgoogletrend() { // url設定 var url = 'https://trends.google.co.jp/trends/trendingsearches/daily/rss?geo=JP'; // namespace設定 var namespace = XmlService.getNamespace("ht",'https://trends.google.co.jp/trends/trendingsearches/daily'); // rss取得 var xml = UrlFetchApp.fetch(url).getContentText(); var document = XmlService.parse(xml); var root = document.getRootElement(); var channel = root.getChild("channel"); var items = channel.getChildren("item"); // sheetに記入 var sheet = SpreadsheetApp.getActiveSheet(); var length = items.length; var today = new Date(); var Month = today.getMonth() + 1; for(var i = 0; i < length; i++) { //var lastRow = sheet.getLastRow(); var title = items[i].getChildText("title"); var traffic = items[i].getChildText("approx_traffic",namespace); // 1記事のみ取得なのでgetChild var news_title = items[i].getChild("news_item",namespace).getChildText("news_item_title",namespace); var news_link = items[i].getChild("news_item",namespace).getChildText("news_item_url",namespace); Logger.log(title); //sheet.getRange(lastRow+1, 1).setValue(today.getFullYear() + "/" + Month + "/"+ today.getDate()+ "/" + today.getHours() + ":00"); //sheet.getRange(lastRow+1, 2).setValue(title); //sheet.getRange(lastRow+1, 3).setValue(traffic); //sheet.getRange(lastRow+1, 4).setValue(news_title); //sheet.getRange(lastRow+1, 5).setValue(news_link); //登録するカレンダーIDを呼び出してeventへ格納 var calendar = CalendarApp.getCalendarById('*************************@group.calendar.google.com'); //イベントのタイトルをtitleへ格納 Logger.log(title); //イベントの開始日をstartへ格納 var start = new Date('2021/04/29'); Logger.log(start); //イベントの終了日をendへ格納 var end = new Date('2021/04/30'); Logger.log(end); var date = new Date(); // 今日の日付を表示 Logger.log(Utilities.formatDate( date, 'Asia/Tokyo', 'yyyyMMdd')); Logger.log(date); //createAllDayEventでカレンダーへイベントを登録 calendar.createAllDayEvent(title,start,end); } }
スクリプトを書いたら、毎日JST 23:00くらいに自動実行です。
スケジュール設定をしたら、パソコンの電源が落ちていようがいまいと
Googleサーバー上で実行です。
今回の場合は毎日決まった時間に自動実行したいので、
午後11時~12時の自動実行を選びます。
そうするとさっきのスクリプトを毎日決まった時間に実行をしてくれるわけです。
スクリプトの時限式トリガーの記事は下記のサイトにうまくまとまっています。
というより、いつも困ったら大体ここを見ています。
サンプルスクリプトも充実しているし、著者の本も買っています。
"【初心者向けGAS】時限式のイベントトリガーを設置して決まった時刻にBotを送信する方法"
https://tonari-it.com/gas-timed-driven-trigger/