土曜日にこんにちは
リハビリ帰りの初号機です
私、ずっと肩と首の痛みに悩まされてまして
(40肩・ストレートネック・幼少期野球によるインナーマッスル破壊のフルコンボだドン)
実は同じ姿勢でPCを操作するのが
非常に辛かったりします(30分が限界だドン)
ですので、毎週リハビリで病院のリハビリセンターに通ってたのですが
本日、担当の方から
『法律が変わって、リハビリのみの診療が出来なくなったんですよ』
『毎回先生の診断が必要でして』
『1時間くらいの拘束時間が2倍くらいになっちゃいます』
・・・・
終わったドン(ドン違い)

まぁ、嘆いても仕方ないので
自分自身でのストレッチ療養に変更するしかないのですが
これ、病院にいくから頑張れる、みたいな所
あるじゃないですか?わかります???
学校いくから勉強仕方なくする、みたいな
それと同じで、堕落した私が
自主性100%で頑張れるかが、とっても不安であります
だれか、一緒にリハビリしようよ
というぼっちの遺言を残しつつ
本題に入っていきたいと思います
Geminiさん、ちょっと前に2.0になったばっかりな気がしてたんですけど・・・
あれ?あれれ??
2.5が出ている・・・・
という事でgeminiの有償版(GeminiAdvanced)で
Gemini 2.5 Pro Experimental(2.5の試験版)が選択できるようになりました

このGemini 2.5 Pro Experimental
ありとあらゆる性能が向上しているとの事
わかりやすい部分で『コード性能の大幅向上』ってのが
あるそうなので、いつも通りやってみたいと思います
お題!(プロンプト)
【gmailに新規メールが届いたら題名と内容をgooglechatに通知するGASを作って】
2.0Flashくんの場合
function checkGmailAndSendToChat() {
// Gmailの検索条件(例:未読メール)
var threads = GmailApp.search('is:unread');
for (var i = 0; i < threads.length; i++) {
var messages = threads[i].getMessages();
var latestMessage = messages[messages.length - 1]; // 最新のメッセージを取得
var subject = latestMessage.getSubject();
var body = latestMessage.getPlainBody();
// Google ChatのWebhook URL
var webhookUrl = 'ここにWebhook URLを貼り付け';
// メッセージの作成
var message = {
text: '件名: ' + subject + '\n内容: ' + body
};
// Google Chatにメッセージを送信
var options = {
method: 'post',
contentType: 'application/json',
payload: JSON.stringify(message)
};
UrlFetchApp.fetch(webhookUrl, options);
// メールを既読にする(必要に応じて)
latestMessage.markRead();
}
}
f
var webhookUrl = ‘ここにWebhook URLを貼り付け’;
// メッセージの作成
var message = {
text: ‘件名: ‘ + subject + ‘\n内容: ‘ + body
};
// Google Chatにメッセージを送信
var options = {
method: ‘post’,
contentType: ‘application/json’,
payload: JSON.stringify(message)
};
UrlFetchApp.fetch(webhookUrl, options);
// メールを既読にする(必要に応じて)
latestMessage.markRead();
}
}
2.5 Pro Experimentalくんの場合
/**
Google Chat Webhook URL
ここに取得したWebhook URLを貼り付けてください。
セキュリティのため、スクリプトプロパティに保存することを推奨します。
参考: https://developers.google.com/apps-script/guides/properties
*/
const CHAT_WEBHOOK_URL = ‘ここに取得したGoogle ChatのWebhook URLを貼り付け’;
/**
本文の最大文字数
これを超える場合は省略されます。
*/
const MAX_BODY_LENGTH = 300; // 必要に応じて調整してください
/**
新しい未読メールを確認し、Google Chatに通知する関数
*/
function checkNewMailAndNotifyChat() {
if (CHAT_WEBHOOK_URL === ‘ここに取得したGoogle ChatのWebhook URLを貼り付け’) {
Logger.log(‘エラー: Google Chat Webhook URLが設定されていません。CHAT_WEBHOOK_URL 変数を編集してください。’);
// 必要であれば、メールなどで管理者に通知する処理を追加
// MailApp.sendEmail(“管理者メールアドレス”, “GASエラー: Webhook URL未設定”, “Gmail通知スクリプトでWebhook URLが設定されていません。”);
return; // Webhook URLが未設定の場合は処理を中断
} try {
// 受信トレイにある未読のスレッドを検索
const threads = GmailApp.search(‘is:unread in:inbox’); if (threads.length === 0) {
Logger.log(‘新しい未読メールはありません。’);
return; // 未読メールがなければ終了
} Logger.log(${threads.length} 件の未読スレッドが見つかりました。); threads.forEach(thread => {
// スレッド内の最新のメッセージを取得
const messages = thread.getMessages();
const latestMessage = messages[messages.length – 1]; // 念のため、本当に未読か再確認
if (!latestMessage.isUnread()) {
return; // continue; (forEach内なのでreturnで次のループへ)
} const subject = latestMessage.getSubject() || ‘(件名なし)’; // 件名が空の場合
let body = latestMessage.getPlainBody() || ‘(本文なし)’; // 本文が空の場合 // 本文が長すぎる場合は短縮
if (body.length > MAX_BODY_LENGTH) {
body = body.substring(0, MAX_BODY_LENGTH) + ‘…’;
} // Google Chatに送信するメッセージペイロードを作成
const payload = {
‘text’: *新しいメールを受信しました*\n\n +
*差出人:* ${latestMessage.getFrom()}\n + // 差出人情報を追加
*件名:* ${subject}\n\n +
*内容:*\n${body}
}; const options = {
‘method’: ‘post’,
‘contentType’: ‘application/json; charset=UTF-8’,
‘payload’: JSON.stringify(payload),
‘muteHttpExceptions’: true // エラー発生時も例外を投げずにレスポンスを取得する
}; // Google Chat WebhookにPOSTリクエストを送信
const response = UrlFetchApp.fetch(CHAT_WEBHOOK_URL, options);
const responseCode = response.getResponseCode();
const responseBody = response.getContentText(); if (responseCode === 200) {
Logger.log(通知を送信しました: ${subject});
// 通知が成功したらメールを既読にする
latestMessage.markRead();
// スレッド全体を既読にする場合はこちら:
// thread.markRead();
} else {
Logger.log(Google Chatへの通知送信に失敗しました。 Status: ${responseCode}, Response: ${responseBody}, Subject: ${subject});
// 送信失敗時の処理(例:再試行ロジック、エラー通知など)をここに追加できます。
} // GASの実行時間制限(6分)を避けるため、多数のメールを処理する場合に少し待機する(任意)
// Utilities.sleep(500); // 0.5秒待機 }); // end forEach } catch (error) {
// スクリプト全体で予期せぬエラーが発生した場合
Logger.log(スクリプト実行中にエラーが発生しました: ${error});
Logger.log(エラー詳細: ${error.stack});
// 必要であれば、メールなどで管理者に通知する処理を追加
// MailApp.sendEmail(“管理者メールアドレス”, “GAS実行エラー”, Gmail通知スクリプトでエラーが発生しました。\n\nエラー: ${error}\n\nスタックトレース:\n${error.stack});
}
}
/**
スクリプトプロパティにWebhook URLを設定する関数(推奨)
この関数を実行して、Webhook URLを安全に保存できます。
1. 下の行の ‘YOUR_WEBHOOK_URL’ を実際のURLに置き換えます。
2. この関数を選択して一度だけ実行します。
3. 実行後、CHAT_WEBHOOK_URL の行を下のコメントアウトされた行に置き換えます。
/ /
function setWebhookUrlToProperties() {
const webhookUrl = ‘YOUR_WEBHOOK_URL’; // ★ここに実際のWebhook URLを貼り付け
if (webhookUrl === ‘YOUR_WEBHOOK_URL’ || webhookUrl === ”) {
Logger.log(‘有効なWebhook URLを入力してください。’);
return;
}
PropertiesService.getScriptProperties().setProperty(‘CHAT_WEBHOOK_URL’, webhookUrl);
Logger.log(‘Webhook URLをスクリプトプロパティに保存しました。’);
}
*/
// スクリプトプロパティからWebhook URLを読み込む場合 (推奨)
// 上記の setWebhookUrlToProperties 関数を実行した後、
// ファイル上部の const CHAT_WEBHOOK_URL = ‘…’ の行を削除し、
// 下の行のコメントアウト(//) を解除してください。
// const CHAT_WEBHOOK_URL = PropertiesService.getScriptProperties().getProperty(‘CHAT_WEBHOOK_URL’);
あ・・・
めちゃくちゃコメント増えて丁寧になっている・・・・
これですね、このコードの前後に説明文みたいなのも
当然返ってきているわけですが
そこの丁寧さも段違いです
また、2.5くんは
【思考プロセスが表示】できる機能があって
どうしてこの回答になったのかが
明示されています
なので、思い通りにならなかったとしても
この思考プロセスを見て、プロンプトを修正すれば
すぐに最適解に辿り着けそうです
正直な話ですよ?
2.0まではコード作成って間違いも多くて
まだまだエンジニアとかプログラムセミナーの需要って
あるなって高を括ってたんですけど
2.5はもうこれは・・・・
いよいよgeminiだけで良いんじゃないかってレベルで・・・・
うん、みんな使ってね
あと、弊社GASセミナーやってます
無くなる前に受講お願いします
という事で、Gemini含めたGoogleの最新情報
最新の使い方、その他なんか色々
全部弊社で受け持ってます!
詳しくは是非是非下記よりお問い合わせください!
それではまた!