目次
通知が多い!
多すぎる。通知が!
LINEに関しては、常に公式アカウントからの通知が100件超える始末だ。
オトモダチからのLINEメッセージの打率は1割を切っているとみていい。
いらない情報はカットされるべきだろう。
なにせそうでもしないと、1日にスマホを2600回触るハメになるからだ。(Hansen,Anders)
Geminiにタイムラインを見張らせろ!
そうだ。自分の代わりにスマホのTL(タイムライン)を見張らせて、
大事そうなメッセージだけ俺に教えてくれればいいじゃん!
と、いうわけでシステムを組んでみた。
フローチャート
実演動画
定期実行の実演
・「みかんを買ってきて!」というお使いLINEを検知し鳴るスマホ
・予定に言及するメッセージへ対応し、todoリストを自動で追加するプログラムも実行中。
例:「明日宿題教えて!」=>「明日宿題教える」とtodoタスクを追加。
重要内容の自動抽出
タスクの自動追加
公開taskerプロジェクト
使用方法
1 「resheetmodule」の「Auth」を選択しスプレッドシートIDを自分のものに変更する
2 ホームの「通知が表示された Gmail, me」を使用できる状態にする
taskerの方のプログラムファイルのダウンロードリンクです。
公開GASコード
実装方法
1 テンプレートをダウンロード。
2 開いて「拡張機能」からgoogle app scriptを起動。
3 以下のプログラムをコピペして載せる。
4 「トリガー」から定期実行させるようにする。
5 この記事の下の「listIDプログラム」の指示に従い設定する。
function endless_sort() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getActiveSheet();
var rows = sheet.getLastRow()-1;
var range = sheet.getRange(2,1,rows,4);
range.sort({column:1,ascending:false});
}
const GEMINI_API = 'APIキーを入力';
function redirect_GeminiPro() {
Utilities.sleep(5000);
//通知文を取得
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var sheet = spreadsheet.getSheetByName('notion data');
var cell = sheet.getRange('B2');
var notiontxt = cell.getValue();
Logger.log("通知文:" + notiontxt);
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var sheet = spreadsheet.getSheetByName('prompt data');
var cell = sheet.getRange(2,4,15);
var prompttxt = cell.getValues();
Logger.log("指示文:" + prompttxt);
//geminiと通信
const url = `https://generativelanguage.googleapis.com/v1beta/models/gemini-pro:generateContent?key=${GEMINI_API}`
, payload = {
'contents': [
{
'parts': [{
'text': prompttxt + ";" + notiontxt
}]
}
]
}
, options = {
'method': 'post',
'contentType': 'application/json',
'payload': JSON.stringify(payload)
};
const res = UrlFetchApp.fetch(url, options)
, resJson = JSON.parse(res.getContentText());
// responseがちゃんと返ってきていることを確認
if (resJson && resJson.candidates && resJson.candidates.length > 0) {
/** 以下の位置を取得
{
"candidates": [
{
"content": {
"parts": [
{
"text":
*/
console.log(resJson.candidates[0].content.parts[0].text);
const response = resJson.candidates[0].content.parts[0].text
} else {
// HARM_CATEGORYによって、無回答の場合も多々あり
console.log('回答が返されませんでした。');
}
if(resJson.candidates[0].content.parts[0].text.match('はい')){
//メールを送信する
//送信先のメールアドレス
const recipient = "メアド";
//メールの件名
const subject = "notionF_servise";
//メールの本文
const body = "notiontxt"
//メールを送信する
GmailApp.sendEmail(recipient, subject, body);
console.log ("メールは正常に送られました")
}else {
// HARM_CATEGORYによって、無回答の場合も多々あり
console.log('メールは送られませんでした。');
}
};
function add_schedule() {
Utilities.sleep(10000);
//通知文を取得
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var sheet = spreadsheet.getSheetByName('notion data');
var cell = sheet.getRange('B2');
var notiontxt = cell.getValue();
Logger.log("通知文:" + notiontxt);
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var sheet = spreadsheet.getSheetByName('prompt data');
var cell = sheet.getRange(2,2,15);
var prompttxt = cell.getValues();
Logger.log("指示文:" + prompttxt);
//geminiと通信
const url = `https://generativelanguage.googleapis.com/v1beta/models/gemini-pro:generateContent?key=${GEMINI_API}`
, payload = {
'contents': [
{
'parts': [{
'text': prompttxt + ";" + notiontxt
}]
}
]
}
, options = {
'method': 'post',
'contentType': 'application/json',
'payload': JSON.stringify(payload)
};
const res = UrlFetchApp.fetch(url, options)
, resJson = JSON.parse(res.getContentText());
// responseがちゃんと返ってきていることを確認
if (resJson && resJson.candidates && resJson.candidates.length > 0) {
/** 以下の位置を取得
{
"candidates": [
{
"content": {
"parts": [
{
"text":
*/
console.log(resJson.candidates[0].content.parts[0].text);
var tax = resJson.candidates[0].content.parts[0].text
var taskListId = ""; // タスクリストID
var task = {
title: tax // タスクのタイトルを設定
};
// Google Tasks APIを使ってタスクをタスクリストに追加
var result = Tasks.Tasks.insert(task, taskListId);
Logger.log("タスクが追加されました: " + result.title);
/* 要素が多すぎるので凍結
//アクセス可能なカレンダーのIDを指定して、Googleカレンダーを取得する
let myCalendar = CalendarApp.getCalendarById('メアドを入力');
//Googleカレンダーに登録する日付を設定する
let startDate = new Date(getFullYear(), month, day);
myCalendar.createAllDayEvent(name,startDate);
*/
} else {
// HARM_CATEGORYによって、無回答の場合も多々あり
console.log('回答が返されませんでした。');
}
}
todoリストIDの取得用プログラム_使用方法
1 google_cloudコンソールで「taskerAPI」を有効化
2 以下のプログラムをGAS上で実行
3 add_shedule.gsにリストIDを代入
function getList() {
var taskLists = Tasks.Tasklists.list();
Logger.log(taskLists.items[0].title);
Logger.log(taskLists.items[0].id);
}
geminiAPIキーの所得方法
以下のサイトでゲットする。やり方は検索しても出てくる。
参考サイト
終わり!
終