見出し画像

OfficeScripts×PowerAutomateで名言ボットをつくってみた

こんにちは。aliceです。

OfficeScriptsとPowerAutomateで名言ボットを作りました。

きっかけはこちら

Microsoft 365 Virtual Marathon2021でのきぬあささんのセッション。OfficeScriptsのデモをされていたのですが、職場のアカウントを確認してみたら使えることがわかり、やってみたいな~と思いました。

OfficeScriptsとは(Excel on the web)

Excel on the web の Office スクリプトを使用すると、日常のタスクを自動化できます。 Excel で行う操作を操作レコーダーで記録すると、スクリプトが作成されます。 さらに、コード エディターでスクリプトの作成や編集をすることもできます。 スクリプトは組織全体で共有できるため、同僚もワークフローを自動化できます。

本当は別のことをやりたかったのですが少し難しかったので名言ボットにチャレンジ。

元はこちら

タカハシさんのブログを参考に作りました。

というかGASをちょこっと直してOfficeScriptsにすればいいじゃん!と思ったのですが、全然できず…。GASを結構忘れているのもあるのですが、エラー・エラー・エラーのエラー祭りで心が折れながらなんとかできました。

画像1

名言ボットというより愛の不時着名シーンボットです。

(とりあえず動いた!というだけのコード)

function main(workbook: ExcelScript.Workbook) :string{
 let sheet = workbook.getActiveWorksheet();
 let range = sheet.getUsedRange();
 let rangeValues = range.getValues();
 let word = "";
 let lastRow = range.getRowCount();
 for (let i = 1; i <= lastRow; i++) {
   if (rangeValues[i][3] === "") {
     word = `${rangeValues[i][1]}`;
     sheet.getCell(i,3).setValue("True");
     if (i >= lastRow-1) {
       let address = "D2:D" + lastRow;
       sheet.getRange(address).clear(ExcelScript.ClearApplyTo.contents);
     }
    break;
   } 
 }
 return word;
}


これをPowerAutomateのフローに入れます。

PowerAutomateのフロー

画像2

① スケジュールを設定(1日)

② 時間が来たらスプリクトを実行(上のスクリプトを実行)

③ Teamsにボットを投稿

画像3

Teamsにボットが投稿されます。

スクリーンショット 2021-05-04 090448

投稿されるとExcelのcheck列に「TRUE」が入り、翌日に次の名言が送信されます。

画像5

テスト実行

スクリーンショット 2021-05-04 091431

ここは泣けるシーンですね。また見たくなってきた。


ここにいくまで躓きまくったので、備忘録的に心が折れながら作った話を書いていけたらいいなと思っています。

この記事が気に入ったらサポートをしてみませんか?