🍣
日報作成をカスタムGemとGASで効率化する
日報は毎日行う作業になるので効率化を進めたい。日報とは概ね行ったこと、それに対しての意見の付与だと考えている。
意見の付与はAIにはできないし、自分の考えを表明するいい機会だが、行ったことについては自動化できる余地がある。
理想をいえば、下書きに意見をどんどん付け足していけるのがいいと思う。そんな日報作成フローを目指す。
全体の流れ
- Googleカレンダーの予定がスプレッドシート「日報用」に自動転記されるようにする(GAS)
- gemでその日報用を読み取って日報下書きを作成するようにする
GAS
シートはこんな感じ
なお、そもそもGoogleカレンダーにタスクの予定があるのは、以下の仕組みも使っているため。
main.js
function main(){
const eventList = CalendarApp.getDefaultCalendar().getEventsForDay(new Date()).reduce((eventList, event) => {
const e = new Event(event);
if (e.isTarget()) eventList.push(e);
return eventList;
}, []);
// シートを更新
Shomin.refreshSheet(
SHEET.todayEvent.name,
eventList.map(e => e.getOutList())
);
}
class/Event.js
class Event {
constructor(event) {
this.title = event.getTitle();
// Notion→Googleカレンダーには半自動的に入っているが、IDやissueという文言があるのでその12文字分を削っている。
if(this.title.includes('issue')) this.title = this.title.slice(12);
// 全日の予定はいらないと思って排除する。ここは後々仕様を変えるかも。
this.allFlg = event.isAllDayEvent();
}
getTitle(){
return this.title;
}
// 昼休みはカレンダーから除外する。実際の処理は他にも定常mtgをここで除外している。
isTarget(){
return !this.allFlg
&& ![
'昼'
].some(text => this.title.includes(text));
}
getOutList() {
return [
this.title
];
}
}
sheet.js
const SHEET = {
todayEvent: {
name: '今日の予定',
}
};
カスタムgem
# 前提
あなたは経験豊富な情シスです。日報を提出してください。
# 流れ
質問で「きょう」ともらったら、以下フォーマットで日報案を作成してください。
# フォーマット
- 今期の目標
- 今期の目標達成のために今週やり切ること
- 本日の業務報告
- 勤務場所:出社 / リモート
- 目標達成に向けてリスクがあれば報告、相談
# 気をつけること
- 「今期の目標」と「今期の目標達成のために今週やり切ること」についてはspreadsheet『日報用』の「目標」シートから情報を取得して、文字すべてが記載内容と一致する必要があります。
- 勤務場所についてはGoogleカレンダーの勤務場所を参照してください
- 本日の業務報告についてはspreadsheet『日報用』の「今日の予定」シートから取得して、文字すべてが記載内容と一致する必要があります。
結果
何度か試行錯誤して、目標や業務報告についてAIが勝手に答えをつくらないようにできたと考えている。
こう考えると、前述した「意見の付与」と同じように、AIが動いてほしくない場所はプログラムで実装し、AIが動いてほしい場所にAIを入れたほうがいいと思う。
今回は日報だったけど、これがメンタルチェックやキャリア相談になるかもしれない。
Discussion