見出し画像

【クリニック院長先生 一緒に<まじん式>を勉強しましょう】7️⃣「記事の紹介⑥GASの練習、GASってガス?」

先日は

Obsidian Web ClipperでAIのために参考資料のデータの取得の仕方について書かせていただきました


【再掲】やはり我が事化


これまでもまじん式の記事や引用はみていましたが、実際に自分で手を動かそうとはしていませんでした。



しかし、MAPIのK氏のスライドを見て「すごっ」と思い、早速自分のTrialを書きながらクリニック院長先生方にも一緒に試してもらいたいと思いました。
しかし、これは多くの先生は手を動かさないにちがいありません。((笑))

私も多くのクリニックで使えるITやDXのコツを書いていますが、問い合わせの多くはゲーマーの方がメインで医師からの問い合わせは少ないです。

しかしながら、クリニックに見学にお越しになると「記事では読んでいましたがようやく意味がわかりました!」となるので、やはり我が事化が大切なんだなというのは 今回自分自身で腑に落ちました。


【再掲】できるかな?

僕もフレッシュな感覚で皆さんにお伝えしたいので、できるかわからない状況からトライしてみたいと思います。

ですので最後まで完遂できるかわからない状況で始めています。

したがって、みなさん最後まで完遂できなくても暖かく見守って下さい



今回はこの記事で勉強します

指定した検索条件のYouTube動画をスプレッドシートにまとめたり、

新着動画をGmailやChatworkに通知してくれるGASを作ったよー

まじんさんの記事より


YouTubeの通知なんかほしくない?

多くの先生は「YouTubeの通知なんか欲しくない」というツッコミをされると思います。
それは練習問題の課題としてであって、一段階抽象度を上げることにします
・GASの練習
・GASに指示出しするコードをAIでつくる練習

とすると汎用性があがります。

GASってガス?ガスって?


多くの院長先生に取ってGAS自体が不明だと思います。Geminiに調べてもらいました


【解説】Google Apps Script(GAS)とは?

先生、「GAS(ガス)」という言葉を聞くと、何か難しいプログラムのように聞こえるかもしれませんが、医療現場の役割で例えると非常にシンプルです。

一言で言うと、**「Googleという巨大な病院の中で、各部署を走り回って連携してくれる『超優秀な医療クラーク(事務アシスタント)』」**のことです。

🏥 どういうことか?(病院での例え)

Googleには色々な便利な道具(部署)があります。
スプレッドシート(=カルテ・台帳)
Gmail(=紹介状・連絡網)
カレンダー(=予約表)
ドライブ(=病歴管理室)


これらは通常、バラバラに存在しています。

例えば、「カルテ(スプレッドシート)を見て、明日の予約患者さんに連絡(Gmail)をする」という作業は、先生やスタッフが手作業で行き来してやっていますよね?

GAS(このクラーク)がいると、こう変わります。
部署間の連携を自動化:

GASというクラークに一度指示を出せば、「カルテに『明日予約』と書いてある人全員に、自動でメールを送っておきました」という動きをしてくれます。
24時間365日稼働:
先生が寝ている間も、このクラークは裏で動き続けます。「毎朝8時に最新のデータをまとめて机(メール)に置いておく」といったことが可能です。
書き写しミスゼロ:
人間と違って、データを右から左へ移すときに転記ミスを絶対にしません。


🛡️ 安全なものなのか?Google純正です:
怪しい外部の業者が作ったソフトではなく、Googleが標準で用意している機能です。最初からGoogleの中に備わっている機能を使うだけなので、新しく何かをインストールする必要すらありません。
無料です:
優秀な事務員を一人雇うようなものですが、人件費は0円です。


つまりGASとは、**「Googleが無料で貸してくれる、先生専属の自動化ロボット」**とお考えください。




まじんさんの記事の内容を追いかけましょう


これは手を動かして「できた!」を感じてもらうものです。

1️⃣新しいGoogle SpreadSheetをつくる。
僕は まじんさん というシートを作りました


2️⃣拡張機能からAppScriptをクリック


3️⃣プロジェクト名を変えました
僕は まじんさんYoutubeとしました




4️⃣ここが拒否反応が出るところです
(){とか出てきた瞬間 僕も含め多くのクリニック院長は「むりむり!」と拒否感が出てくると思います。 私もこれまでZAPIERをメインに使っていたのはノーコードでできるからです。 

このコード(スクリプト)を作るのが普通の院長では出来ないのです。ですのでこれまで僕も紹介してこなかったのです。しかし、AIがでてきてコードを書いてくれるようになったので手の届くものになったのです。

まじんさんの記事にあるリンク先をクリックしてファイルをダウンロードします。

ファイル開いてみたらまったくわかりません


ありがたいですが、これをそのままコピペしても何も成長がありませんの一応GEMINIに解説してもらいました

井手先生、その「ただコピペするだけじゃなくて、中身を理解したい」という姿勢、素晴らしいです!医師として新しい術式や薬を導入する際も、作用機序(メカニズム)を知らずに使うことはないのと全く同じですね。

この長い呪文(スクリプト)は、大きく分けて**5つの「業務マニュアル」**から成り立っています。

先ほどの「医療クラーク(事務員)」の例えを使って、中学生でもイメージできるように解剖してみましょう。



このスクリプトの「5つの業務」解剖図

1. 準備と聞き取り(設定)

コード上の名前: setSearchKeywords, setGmailSettings など何をしているか?
事務員が先生に「今日は何を調べますか?」「報告先はどこですか?」と聞き取りをして、メモ帳(プロパティ)に書き留める作業です。
ここがポイント:
毎回プログラムを書き換えなくて済むように、ポップアップ画面を出して、先生が入力した「検索ワード(例:糖尿病)」や「メールアドレス」を保存する機能が書かれています。


2. 買い出し(データ取得)



コード上の名前: fetchYouTubeData 1

何をしているか?
事務員がYouTubeという巨大な図書館に行き、先生から頼まれたキーワードで検索をかける作業です。
ここがポイント:
実はここが一番重要です。「API(エーピーアイ)」という専用の裏口通用口を使って、YouTubeのデータベースから直接、動画のタイトルや再生回数などのデータを引っ張り出してきます。まずは選り好みせず、バサッとデータを集めます。


3. トリアージ(選別・フィルタリング)



コード上の名前: parseDurationToMinutes, isJapaneseCreator 2222

何をしているか?
集めてきた大量の動画データから、先生が見る価値のあるものだけを選び抜く作業です。救急外来のトリアージと同じです。
具体的な選別基準(コードに書かれていること):
再生回数: 「1000回未満の動画は、信頼性が低いから除外しよう」
動画の長さ: 「2分未満はショート動画(TikTokみたいなもの)だから、勉強にならないので除外しよう」

日本人判定: 「タイトルや説明文に日本語が含まれていない(海外の動画)なら除外しよう」3



4. カルテ記載(スプレッドシートへの書き込み)



コード上の名前: initializeDataSheet 4

何をしているか?
選別を通過した動画の情報を、綺麗に台帳(スプレッドシート)に書き写す作業です。
ここがポイント:
動画のタイトル、URL、再生回数などを決まった列に書き込みます。「未送信」というハンコを押しておくことで、後で「これはまだ先生に報告していないやつだ」と区別できるようにしています。


5. 回診報告(メール・Chatwork通知)



コード上の名前: sendToGmail, analyzeAndReport 5555

何をしているか?
「先生、新しい動画が見つかりました」と報告する作業です。
ここがポイント:
台帳を見て「未送信」になっている動画だけをピックアップします。報告が終わったら、台帳のステータスを「送信済み」に書き換えます(二重報告を防ぐためです)。
メールの本文も、見やすいようにデザイン(HTMLメール)するように書かれています。



まとめ:このコードの正体

つまり、この長い英語の羅列は、以下のような新人スタッフへのマニュアルそのものです。
【新人GAS君への業務命令書】

朝9時になったら起きて(トリガー)
院長が指定したキーワードでYouTubeを検索し(データ取得)
短い動画や外国語の動画は捨てて(トリアージ)
残ったものを台帳に書き写し(カルテ記載)「
未報告」のものがあれば、院長にメールして、台帳に「報告済」とハンコを押すこと(報告)


なるほど!


1️⃣しかし、大切なことはAIにつくってもらう時にも、こうやって言語化してコード(スクリプト)を作ってもらうことです。

2️⃣あとはそのまま使うのではなく自分なりに少しカスタマイズしてそれがWORKするのを確認する練習。今回は「私はChatwork使っていないのでSlackにして」と訂正をお願いしました。

基本的な「事務員の動き(検索→選別→記録)」はそのままに、**「最後の連絡先だけSlackに変更した完全版」**を作成しました。

このコードをコピーして、元のコードを全部消して貼り替えてください。

⚠️ その前に1つだけ準備(Slack側の受取口を作る)

Slackにロボットから通知を送るには、「Webhook URL(ウェブフック ユーアールエル)」という専用のポストの住所が必要です。これだけ先に取得してください。
・PCでSlackを開き、通知を送りたいチャンネル名を右クリック
・「チャンネル詳細を表示」→「インテグレーション」→「アプリを追加」
・「Incoming WebHooks」を検索して「インストール(または設定)」
・「Webhook URL」という https://hooks.slack.com/... から始まるURLをコピーしておく。 (※このURLが、後でコードを実行したときに入力する「宛先」になります)

またわからん言葉が、Webhook?

Webhook? もう嫌だわからん!!と思った先生、ちょっと待ったー!
以下の記事に以前解説しているので読んでみてください。わかって頂けるかと思います。

1️⃣WEBでSlackワークスペースを開く

2️⃣アプリを作成する画面に

3️⃣「From scratch」 をクリックします。

4️⃣App Name: 好きな名前(例:「YouTube通知」など)を入れます。

・Pick a workspace: 通知を送りたいSlackのワークスペースを選びます
・右下の緑のボタン 「Create App」 を押します。


5️⃣URL取得まで

・左側のメニューにある 「Incoming Webhooks」 をクリック。
・画面右上のスイッチ(Activate Incoming Webhooks)を 「On」 に切り替えます。
・下に現れるボタン 「Add New Webhook to Workspace」 をクリック。
・投稿先のチャンネルを選んで 「許可する」 を押します。
・画面に https://hooks.slack.com/... から始まるURLが表示されるので、「Copy」 ボタンを押してコピーします。

スクリプト(コードを貼り付ける)


貼り付けたら、画面上部の**フロッピーディスクのアイコン(💾)**をクリックします。

「YouTubeサービス」を追加する

このロボットがYouTubeにアクセスするための「許可証」を追加します。これを忘れると動きません。
1️⃣画面左側の**「サービス」**という文字の横にある ボタンをクリックします。

  1. リストの中から 「YouTube Data API v3」 を探してクリックします(下の方にあります)。


  1. 下の 「追加」 ボタンを押します。

    • → 左の「サービス」の下に「YouTube」と表示されれば成功です。


スプレッドシートを更新する

ここまで出来たら、この黒い画面(スクリプトエディタ)はそのままにして、元のスプレッドシートの画面に戻ってください。

・ブラウザの 「更新ボタン(再読み込み)」 を押します。
・数秒待つと、メニューバーの「ヘルプ」の右あたりに、新しく**「カスタムメニュー」**というボタンが出現します!


SlackAPIのURLを


ここまで来たら、その「カスタムメニュー」をクリックして、**「🔧 初期設定ガイド」**を選んでください。あとは画面の指示に従って、さきほどのSlackのURLを貼り付けるだけで完了です!


1️⃣カスタムメニューをクリックすると
おーすごいねー

2️⃣メニューの一つをクリックすると
最初は承認を求められます

3️⃣なんか怖い画面になりますが その左下にある<詳細>をクリック

4️⃣ページに移動する




5️⃣<すべて選択>をクリックして<続行>


6️⃣初期設定ガイドがでてきますので<OK>をクリック


7️⃣データしシート準備完了とでますので<OK>をクリック



8️⃣最近はAntigravityにくびったけなので 以下のように設定して<OK>


9️⃣検索キーワードを保存しましたと、<OK>


🔟Slack設定、 SlackのWebhookURLを先程のSLACKの画面からコピーして設定していきます。これで初期設定終わり








それにしてもこんなメニューまで作るのは完全にまじんさんのスクリプトのおかげです。

次に

・Slack設定(みなさんはChatworkのままかもしれませんが)
・Gmail設定
・検索キーワード設定
が終わっています(終わってなければ皆さんしてくださいね)

1️⃣フィルター条件を設定

Antigravityはマイナーなものなので<500回>に設定しました

これは確かにショート動画除外用、2分のままで行きました

別に日本語だけでなくても良いので<いいえ>にしました


まじんさん渋い設定ですね。ありがたい


さらに次に、手動取得を

1️⃣手動で取得をクリック

2️⃣ おーーーーーっ、感動!

SackやGmailに送れるかな?


1️⃣まずはGmailに


2️⃣おーーーっいいですね来ています

3️⃣スプレッドシートに<送信済み>と

4️⃣Gmailを送った後にSlackに送ろうとすると「新しい動画はありませんでした」となりました。これは仕方ないですね


自動実行トリガー

「自動トリガー管理」をクリック



せっかくなら完全自動実行

1日一回でOKなので「5」にしました。 明日以降楽しみですね



今日はここまで

今日の課題は ほとんどまじんさんのスクリプト(コード)のお陰ですが
大切なことはスプレッドシートでこんなことができる
AIのお陰でスクリプトが書ける
自動化ですごいデータが自動で入る
などなどを実感することが目的です。

2度と自分ではこんなこと出来ないですが、できるかもしれないという期待値を持つことが大切です

まじんさんに学ぼうシリーズ







いいなと思ったら応援しよう!

teyede1972 よろしければサポートお願いします。 NYAUWの活動は現在マネタイズを考えずに意義のみを追求するフェーズです。 ニッチな分野のやせ我慢プロジェクトですので お気持ちだけでも嬉しいです。