@Blog{zip358.com}
日常日誌からプログラムやYOUTUBER紹介、旅日記まで日々更新中です。
仕事がお休みの日だけお休みと表示する機能はアレなので….
2025.01.19
おはようございます.仕事がお休みの日だけお休みと表示する機能は近日中につけると記載しましたが当分、このままの状態で運用します.いろいろと考えた結果、あまりメリットはないかなと思ったのとXのポストが多いときは大体休みだと気づくだろうという思いもあり、わざわざそれを可視化してもあまり意味がないじゃないかなと.
そういう思いからスケジュール反映は当分、保留とさせて頂きます.スケジュールのコードを観たいなと思う方はスケジュールと検索からググって頂けたら表示されると思います.グーグルカレンダーの一部スケジュールを表示させたいと思う方は恐らく、企業さんぐらいじゃないのかと思います.
因みにグーグルカレンダーのAPIを叩きすぎると費用が発生するらしいので、そこらへんの事を考慮してコードを書く必要があります.因みに自分はクロンを使用して定期的にデータベースに保存する形にしました.
ググってと書きましたが一応リンクを貼っときます.
明日へ続く
著者名 @taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
グーグルカレンダー, クロン, コード, スケジュール, スケジュール反映, そこらへん, データベース, メリット, リンク, わざわざそれ, 一部スケジュール, 休み, 保留, 可視化, 意味, 機能, 状態, 結果, 費用, 近日中,
グーグルカレンダーの予定を一部表示させたい時のPHPコード.
2025.01.08
おはようございます.グーグルカレンダーの予定を一部表示させたい時のPHPコードは下記になります、参考にしたサイトはこちらですが参考にしただけでコードは違うものになります.APIを毎日叩いていると課金しなくてはならないかもなのでデータベースに保存する形にしました.これも良い方法かと言えばどうだろうと言う思いもあります.
<?php
ini_set('display_errors', 0);
require_once './vendor/autoload.php';
require_once './config.php';
use Carbon\Carbon;
use Google\Client;
use Google\Service\Calendar;
use Illuminate\Database\Capsule\Manager as DB;
class openSchedule
{
public $DB = null;
public function __construct()
{
$database = new DB();
$database->addConnection([
'driver' => 'mysql',
'host' => DB_HOST,
'port' => PORT,
'database' => DB_DATABASENAME,
'username' => DB_USER,
'password' => DB_PASSWORD,
'charset' => 'utf8mb4',
'collation' => 'utf8mb4_general_ci',
]);
$database->setAsGlobal();
$database->bootEloquent();
$this->DB = $database;
}
public function saveSchedule($dateTimeString):void
{
//$this->DB::table('schedules')->delete();
try {
$client = new Client();
$client->useApplicationDefaultCredentials();
$client->addScope(Calendar::CALENDAR_READONLY);
$client->setAuthConfig(JSONPATH);
$service = new Calendar($client);
// カレンダーID
$calendarId = GOOGLECALENDARID;
// 取得時の詳細設定
$optParams = [
'maxResults' => 10,
'orderBy' => 'startTime',
'singleEvents' => TRUE,
'timeMin' => (new \DateTime($dateTimeString))->format(DATE_RFC3339),
'timeZone' => 'Asia/Tokyo',
];
$results = $service->events->listEvents($calendarId, $optParams);
if (empty($results->getItems())) {
echo "イベントが見つかりませんでした。";
} else {
foreach ($results->getItems() as $event) {
$this->DB::table('schedules')->insert([
'start' => Carbon::parse($event->getStart()->dateTime)->format('Y-m-d H:i:s'),
'end' => Carbon::parse($event->getEnd()->dateTime)->format('Y-m-d H:i:s'),
'title' => $event->getSummary(),
'detail'=>$event->getDescription()
]);
}
}
} catch (Google\Service\Exception $e) {
echo 'Google Service Exception: ' . $e->getMessage();
} catch (Exception $e) {
echo 'General Exception: ' . $e->getMessage();
}
}
public function getWeekDays($dateTimeString):string
{
// Carbonインスタンスに変換してフォーマット
$carbon = Carbon::parse($dateTimeString);
// 日本語の曜日名配列
$japaneseWeekdays = ['日', '月', '火', '水', '木', '金', '土'];
// 曜日の数値を取得し、日本語の曜日名に変換
$weekdayNum = $carbon->dayOfWeek;
$japaneseWeekday = $japaneseWeekdays[$weekdayNum];
return $japaneseWeekday;
}
public function getSchedule($dateTimeString):string
{
$str = '';
$events = $this->DB::table('schedules')->select(['*'])->where('start','>=',$dateTimeString)->limit(1)->get();
foreach($events as $event){
$str.= sprintf("%s <br>",$event->title);
$str.= sprintf("%s %s曜日 <br>",Carbon::parse($event->start)->format('Y年m月d日 H時i分'),$this->getWeekDays($event->start));
$str.= sprintf("%s<br>",Carbon::parse($event->end)->format('Y年m月d日 H時i分'));
}
return $str;
}
public function getLastDate():string|null
{
$lastRecord = $this->DB::table('schedules')
->orderBy('id', 'desc')
->first();
return $lastRecord?$lastRecord->start:null;
}
}
//print (new openSchedule)->getSchedule((new \DateTime())->format('Y-m-d 00:00:00'));
if(isset($argv) && $argv[0]){
$openSchedule = new openSchedule();
$dateTimeString = $openSchedule->getLastDate();
if($dateTimeString){
$date = new DateTime($dateTimeString);
$date->modify('+1 day');
$openSchedule->saveSchedule($date->format('Y-m-d 00:00:00'));
}else{
$openSchedule->saveSchedule((new \DateTime())->format('Y-m-d H:i:s'));
}
}
因みに近日中にブログに仕事の予定などを記載するようにします.近日中なのでいつになるかは未定です.
そうそうCalendarIDという物がグーグルデベロッパサイトにあると思い込んでいて馬鹿な事をしていました.皆さんは間違わないように(笑).CalendarIDはグーグルカレンダーの設定の中にあります.
明日へ続く
著者名 @taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
```, インスタンス, カレンダー, グーグルカレンダー, グーグルデベロッパサイト, コード, データベース, フォーマット, 参考, 変換, 年月日, 数値, 時分, 曜日, 曜日名, 曜日名配列, 火, 皆さん, 近日中,
第何週目かを即座に知りたくないですか?☺
2023.09.03
おはようございます、第何週目かを即座に知りたくないですか?そんな二番煎じのちょっとしたシステムを作りました。下記のリンクをクリックしてお使い頂けたら幸いです☺
https://zip358.com/tool/week-day/
このシステムまだ作り込みの最中でして、もう一つ機能を追加して完了とします。その機能とは・・・秘密です。リリースした再度、記事にしてご報告いたします。二番煎じなので差別化を図らないと検索上位には表示されそうにないなと思ったので近日中に公開します💁。
追伸:記事をUPする前に機能追加できたので、こちらの記事にどんな機能なのか説明します。それはGカレンダーでインポート出来るCSVファイルを出力する機能です。これがあれば便利かなと思ってその機能を追加しました。差別化という程のものではないけれども、実際、他のサイトでは出力機能がないので、調べるには良いけど活用できないよね。
いちいち調べた情報をカレンダーに登録するのは、面倒くさいと思う人もいるだろうという事で今回、その機能を自前しました。
著者名 @taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
CSVファイル, Gカレンダー, カレンダー, システム, リンク, 下記, 二番, 二番煎じ, 再度, 出力機能, 即座, 実際, 差別化, 最中, 検索上位, 機能, 目, 程, 近日中, 追伸,
近日中にというよりは今月末ぐらいまでに。
2015.07.10
近日中にというよりは今月末ぐらいまでに。このサイトを改装しようと思います。デザインも統一化するつもりでいます。WordPressの事はあまり分からないのですが、何とか頑張って作ろうと考えています。出来るかどうかは微妙ラインですけど、なるべく早く改装するつもりでいます。ベースはBootstrapを使用するつもりです、なのでサイトベース用(これ)なデザインに統一するつもり( ゚д゚ )。←見栄えは多少変更するつもりでいます。
追記:2015/07/11
作ってみましたが、イマイチ感があるので当分、今のままでいこうと思います。
著者名 @taoka_toshiaki
※この記事は著者が30代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
Bootstrap, WordPress, イマイチ感, サイトベース様, サイトベース用, デザイン, 今月末, 多少, 微妙ライン, 統一化, 見栄え, 近日中, 追記,