Office スクリプトの概要と活用方法の紹介

15.7K Views

November 28, 24

スライド概要

「Japan Microsoft 365 コミュニティ カンファレンス 2024」の登壇資料です。
(2024年11月28日)

profile-image

きぬあさと申します。 VBAやOffice スクリプト、Power Automate for desktop等について情報発信しております。

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

関連スライド

各ページのテキスト
1.

Nov, 28. -30. 2024 #A06 Office スクリプトの概要と 活用方法の紹介 きぬあさ / @kinuasa Microsoft MVP (Business Applications, M365) #JapanM365CC2024

2.

自己紹介 DQ3 HD-2Dプレイ中 2 Japan Microsoft 365 コミュニティ カンファレンス 2024 ▪ きぬあさ / @kinuasa ▪ 中小企業の総務の中の情シス ▪ ブログ:https://www.ka-net.org/blog/ ▪ note:https://note.com/kinuasa/ ▪ RPACommunity(Power Automate for desktop 支部): https://rpacommunity.connpass.com/ #JapanM365CC2024

3.

本日のアジェンダ ▪ Office スクリプト(Office Scripts)概要 ▪ Office スクリプトの保存先 ▪ Office スクリプトの開発環境 ▪ Office スクリプトの実行方法 ▪ DEMO:Copilotにコードを書くのを手伝ってもらう ▪ Office スクリプトとPower Automateとの連携 ▪ まとめ 3 Japan Microsoft 365 コミュニティ カンファレンス 2024 #JapanM365CC2024

4.

Office スクリプト(Office Scripts)概要 #JapanM365CC2024

5.

Office スクリプト(Office Scripts)とは ▪ Excel(on the web, Windows, Mac)の処理をスクリプトで自動化する機能 ▪ サポートされているホストはExcelのみ。WordやPowerPointといった他のOffice アプリケーションはサポートされていない。 ▪ 「自動化」タブから「マクロの記録」のように操作を記録・再生可能 ▪ 言語: TypeScript(JavaScript) ▪ 2021年5月に一般公開 • Ignite 2019で発表 5 Japan Microsoft 365 コミュニティ カンファレンス 2024 #JapanM365CC2024

6.

必要動作環境(商用、または教育機関向け) ▪ Excel on the web、Excel for Windows(バージョン 2210 以降)、Excel for Mac ▪ OneDrive for Business ▪ 次のいずれかの Microsoft 365 サブスクリプション ライセンス: • Microsoft 365 Apps for business, Microsoft 365 Business Standard, Microsoft 365 Apps for enterprise(デバイスベースライセンス含む), Office 365 A3, Office 365 A5, Office 365 Enterprise E1, Office 365 Enterprise E3, Office 365 Enterprise E5, Office 365 F3 ▪ 接続されたエクスペリエンスが有効になっているインターネット接続 https://learn.microsoft.com/ja-jp/office/dev/scripts/testing/platform-limits?tabs=business&WT.mc_id=M365-MVP-4029057 https://support.microsoft.com/ja-jp/office/226eddbc-3a44-4540-acfe-fccda3d1122b?WT.mc_id=M365-MVP-4029057 より 6 Japan Microsoft 365 コミュニティ カンファレンス 2024 #JapanM365CC2024

7.

必要動作環境(個人、または家庭向け)(1) ▪ Excel on the web、またはExcel for Microsoft 365 ▪ Microsoft 365 Insider プログラム (https://aka.ms/MSFT365InsiderProgram )への参加 ▪ 接続されたエクスペリエンスが有効になっているインターネット接続 ▪ 現時点(2024年11月)でプレビュー段階 https://learn.microsoft.com/ja-jp/office/dev/scripts/testing/platform-limits?tabs=home&WT.mc_id=M365-MVP-4029057 より 7 Japan Microsoft 365 コミュニティ カンファレンス 2024 #JapanM365CC2024

8.

必要動作環境(個人、または家庭向け)(2) https://learn.microsoft.com/ja-jp/office/dev/scripts/testing/platform-limits?tabs=home&WT.mc_id=M365-MVP-4029057 より 8 Japan Microsoft 365 コミュニティ カンファレンス 2024 #JapanM365CC2024

9.

接続されたエクスペリエンスとは “Office は、クライアント ソフトウェア アプリケーションとユーザーがより効果的 に作成、通信、共同作業できるように設計された接続エクスペリエンスで構 成されています。 接続環境の例としては、OneDrive に保存されているドキュメ ントを他のユーザーとの共同作用や、Word 文書のコンテンツを別の言語に 翻訳するなどがあります。” https://learn.microsoft.com/ja-jp/microsoft-365-apps/privacy/connected-experiences#other-connectedexperiences?WT.mc_id=M365-MVP-4029057 より 有効にしていると便利な機能を利用できる 9 Japan Microsoft 365 コミュニティ カンファレンス 2024 #JapanM365CC2024

10.

Office スクリプトでできること(一例) ▪ セルの読み書き、書式設定 ▪ シートの追加・削除 ▪ グラフの追加・削除 ▪ テーブルの追加・削除 ▪ ピボットテーブルの追加・削除 ▪ コメントの追加・削除 ▪ 図形の追加・削除 ▪ 画像の追加・削除 10 Japan Microsoft 365 コミュニティ カンファレンス 2024 Microsoft 365 Virtual Marathon 2022 「VBA開発者のためのOffice スクリプト入門」より https://www.youtube.com/watch?v=UhmYDfLf3Xs #JapanM365CC2024

11.

Office スクリプトの位置づけ ▪ エンドユーザー向け ▪ デスクトップ・個人向け → VBA ▪ Web・共同作業向け → Office スクリプト ▪ より高度な処理を行いたい場合は 「Office アドイン」(Office Web Add-ins) VBAもOffice スクリプトも非開発者の 方々でも小規模なプログラムを作成できる ように設計されています。 11 Japan Microsoft 365 コミュニティ カンファレンス 2024 https://learn.microsoft.com/ja-jp/office/dev/scripts/resources/vbadifferences?WT.mc_id=M365-MVP-4029057 より #JapanM365CC2024

12.

Office スクリプトが使えないときは ▪ ライセンスを確認する。 ▪ サードパーティークッキーが有効になっていることを確認する(※ Excel on the webを使 用する場合) 。 管理者がMicrosoft 365 管理センターでOffice スクリプトを無効にしていないことを確 認する。 管理者がOffice スクリプトをブロックするようにグループ ポリシーを構成していないこと を確認する(※ Windowsのみ) 。 WebView2をインストールする(※ Windowsのみ) 。 テナントに外部ユーザーまたはゲスト ユーザーとしてログインしていないことを確認する。 ▪ ▪ ▪ ▪ https://learn.microsoft.com/ja-jp/office/dev/scripts/testing/troubleshooting?WT.mc_id=M365-MVP-4029057#automate-tabnot-appearing-or-office-scripts-unavailable https://support.microsoft.com/ja-jp/office/9fbe283d-adb8-4f13-a75b-a81c6baf163a?WT.mc_id=M365-MVP-4029057 より 12 Japan Microsoft 365 コミュニティ カンファレンス 2024 #JapanM365CC2024

13.

Office スクリプトの保存先 #JapanM365CC2024

14.

Office スクリプトの保存先(1) ▪ スクリプトは既定でOneDrive( /Documents/Office Scripts/ フォルダー)に保存さ れる。 • 個人、または家庭向けの場合:ローカルのキャッシュ ▪ 拡張子: osts 参考:https://learn.microsoft.com/ja-jp/office/dev/scripts/overview/script-storage?tabs=business&WT.mc_id=M365-MVP-4029057 14 Japan Microsoft 365 コミュニティ カンファレンス 2024 #JapanM365CC2024

15.

Office スクリプトの保存先(2) ・osts ファイル 15 Japan Microsoft 365 コミュニティ カンファレンス 2024 #JapanM365CC2024

16.

Office スクリプトの保存先(3) ・SharePointへの保存 DLしたostsファイルを 直接アップしてもOK! ファイルピッカーでSharePoint上の フォルダーを指定して保存 16 Japan Microsoft 365 コミュニティ カンファレンス 2024 #JapanM365CC2024

17.

Office スクリプトの保存先(4) ・SharePointからの実行 SharePoint上のスクリプトを選択 17 Japan Microsoft 365 コミュニティ カンファレンス 2024 #JapanM365CC2024

18.

Office スクリプトの開発環境 #JapanM365CC2024

19.

操作をスクリプトとして記録 ▪ 「マクロの記録」のようにExcel上の操作をスクリプトとして記録可能 ▪ 「自動化」タブ → 「操作を記録」 19 Japan Microsoft 365 コミュニティ カンファレンス 2024 #JapanM365CC2024

20.

Office スクリプトの開発環境:コード エディター ▪ 作業ウィンドウのコード エディター ▪ コード エディターの機能 • インテリセンス • ミニマップ • コードの折りたたみ • テーマ設定 • サンプルコード 20 Japan Microsoft 365 コミュニティ カンファレンス 2024 #JapanM365CC2024

21.

コード エディターの機能(1) ▪ インテリセンス • オートコンプリート、構文エラーの強調表示、インラインAPIドキュメント • Visual Studio Code と同じインテリセンスエンジン 21 Japan Microsoft 365 コミュニティ カンファレンス 2024 #JapanM365CC2024

22.

コード エディターの機能(2) ▪ ミニマップ • エディターの設定 → 「ミニマップ」のチェックをオン 22 Japan Microsoft 365 コミュニティ カンファレンス 2024 #JapanM365CC2024

23.

コード エディターの機能(3) ▪ コードの折りたたみ • エディターの設定 → 「折りたたみ」のチェックをオン 23 Japan Microsoft 365 コミュニティ カンファレンス 2024 #JapanM365CC2024

24.

コード エディターの機能(4) ▪ テーマ設定 • エディターの設定 → 「テーマ」を選択 Office 濃色 淡色 ハイ コントラスト ダーク ハイ コントラスト ライト 24 24 Microsoft Japan Microsoft 365 コミュニティ カンファレンス Japan 365 コミュニティ カンファレンス 2024 2024 #JapanM365CC2024

25.

コード エディターの機能(5) ▪ サンプルコード • コードエディター → 「サンプル」タブ 25 Japan Microsoft 365 コミュニティ カンファレンス 2024 #JapanM365CC2024

26.

Office スクリプトのデバッグ方法 ▪ console.log() ▪ ステップ実行やブレークポイントは無し https://learn.microsoft.com/ja-jp/office/dev/scripts/testing/troubleshooting?WT.mc_id=M365-MVP-4029057#console-logs より 26 Japan Microsoft 365 コミュニティ カンファレンス 2024 #JapanM365CC2024

27.

【廃止】Visual Studio Code for the Webによる開発 ▪ 2022年時点でVisual Studio Code for the WebでOffice スクリプト開発ができる機能が プレビューリリース → その後廃止 • Visual Studio Code for Office Scriptsの紹介 https://www.ka-net.org/blog/?p=15247 • Visual Studio Code for Office Scripts (プレビュー) https://web.archive.org/web/20230210020654/htt ps://learn.microsoft.com/ja- jp/office/dev/scripts/develop/vscode-for-scripts 27 Japan Microsoft 365 コミュニティ カンファレンス 2024 #JapanM365CC2024

28.

オススメの開発環境 ▪ Windows版Excelのコードエディターのウィンドウを分離 28 Japan Microsoft 365 コミュニティ カンファレンス 2024 #JapanM365CC2024

29.

Office スクリプトの実行方法 #JapanM365CC2024

30.

Office スクリプトの実行方法(1) ▪ 「自動化」タブ → 「Office スクリプト」ギャラリー、「すべてのスクリプト」 30 Japan Microsoft 365 コミュニティ カンファレンス 2024 #JapanM365CC2024

31.

Office スクリプトの実行方法(2) ▪ スクリプト ボタン • コードエディターの「その他のオプション」 → 「ブックに追加」 図形の書式設定でボタンの 見た目等を変えられます。 31 Japan Microsoft 365 コミュニティ カンファレンス 2024 #JapanM365CC2024

32.

Office スクリプトの実行方法(3) ▪ Power Automateを使用したOffice スクリプトの実行 • Excel Online (Business) コネクタ → 「スクリプトの実行」 • 「自動化」タブ → 「作業の自動化」からテンプレートをもとにフローを作ることも可能 https://learn.microsoft.com/ja-jp/office/dev/scripts/testing/platformlimits?tabs=business&WT.mc_id=M365-MVP-4029057 より 32 Japan Microsoft 365 コミュニティ カンファレンス 2024 #JapanM365CC2024

33.

DEMO: Copilotにコードを書くのを手伝ってもらう #JapanM365CC2024

34.

Copilotにコードを書くのを手伝ってもらう(1) Copilotに手伝ってもらえば良いじゃん! Edgeの右上にある Office スクリプトは便利かも ボタンを押せばす ぐに使えるよ。 しれなけど、コードを書くの は苦手だなぁ・・・ 34 Japan Microsoft 365 コミュニティ カンファレンス 2024 #JapanM365CC2024

35.

Copilotにコードを書くのを手伝ってもらう(2) プロンプト Web版Excelの処理を自動化するためにTypeScriptでOffice スクリプトのコードを 書いています。以下の処理を行うコードを生成し、コピー&ペーストで貼り付けられる ようにしてください: 現在選択中のセルに「こんにちは、世界」と入力する 35 Japan Microsoft 365 コミュニティ カンファレンス 2024 #JapanM365CC2024

36.
[beta]
Copilotにコードを書くのを手伝ってもらう(3)
生成されたコード例
function main(workbook: ExcelScript.Workbook) {
// 現在選択中のセルを取得
let selectedRange = workbook.getSelectedRange();

// セルに「こんにちは、世界」と入力
selectedRange.getCell(0, 0).setValue("こんにちは、世界");
}
36

Japan Microsoft 365 コミュニティ カンファレンス 2024

#JapanM365CC2024

37.

Copilotにコードを書くのを手伝ってもらう(4) 37 Japan Microsoft 365 コミュニティ カンファレンス 2024 #JapanM365CC2024

38.

Copilotにコードを書くのを手伝ってもらう(5) プロンプト Web版Excelの処理を自動化するためにTypeScriptでOffice スクリプトのコードを 書いています。以下の処理を行うコードを生成し、コピー&ペーストで貼り付けられる ようにしてください: セルB1に1と2と3の合計値を入力する 38 Japan Microsoft 365 コミュニティ カンファレンス 2024 #JapanM365CC2024

39.

Copilotにコードを書いてもらう(6) 生成されたコード例 function main(workbook: ExcelScript.Workbook) { // セルB1を取得 let sheet = workbook.getActiveWorksheet(); let cellB1 = sheet.getRange("B1"); // 1と2と3の合計値を計算してセルB1に入力 let sum = 1 + 2 + 3; cellB1.setValue(sum); } 39 Japan Microsoft 365 コミュニティ カンファレンス 2024 #JapanM365CC2024

40.

Copilotにコードを書くのを手伝ってもらう(7) 40 Japan Microsoft 365 コミュニティ カンファレンス 2024 #JapanM365CC2024

41.

Copilotにコードを書くのを手伝ってもらう(8) プロンプト 下記条件でテスト用のダミーデータを生成し、コピー&ペーストで貼り付けられるよう にしてください: ### 条件 ・野菜(和名)と果物(和名)の販売データ ・「商品」と「価格」の2列 ・20行 ・CSV形式 41 Japan Microsoft 365 コミュニティ カンファレンス 2024 #JapanM365CC2024

42.

Copilotにコードを書くのを手伝ってもらう(9) 生成されたデータ例 商品,価格 トマト,150 きゅうり,100 キャベツ,200 にんじん,120 ほうれん草,180 レタス,160 ブロッコリー,220 ピーマン,140 なす,130 じゃがいも,90 りんご,250 みかん,180 バナナ,200 ぶどう,300 いちご,350 さくらんぼ,400 もも,380 すいか,500 メロン,600 パイナップル,450 42 Japan Microsoft 365 コミュニティ カンファレンス 2024 #JapanM365CC2024

43.

Copilotにコードを書くのを手伝ってもらう(10) プロンプト Web版Excelの処理を自動化するためにTypeScriptでOffice スクリプトのコードを 書いています。以下の処理を行うコードを生成し、コピー&ペーストで貼り付けられる ようにしてください: セルA1からセルB21の範囲を元にテーブルを作成する。その際、先頭行をテーブルの 見出しとして使用する 43 Japan Microsoft 365 コミュニティ カンファレンス 2024 #JapanM365CC2024

44.
[beta]
Copilotにコードを書くのを手伝ってもらう(11)
生成されたコード例
function main(workbook: ExcelScript.Workbook) {
// セルA1からセルB21の範囲を取得
let sheet = workbook.getActiveWorksheet();
let range = sheet.getRange("A1:B21");

// テーブルを作成し、先頭行を見出しとして使用
let table = sheet.addTable(range, true);
}
44

Japan Microsoft 365 コミュニティ カンファレンス 2024

#JapanM365CC2024

45.

Copilotにコードを書くのを手伝ってもらう(12) 45 Japan Microsoft 365 コミュニティ カンファレンス 2024 #JapanM365CC2024

46.

Copilotにコードを書くのを手伝ってもらう(13) プロンプト Web版Excelの処理を自動化するためにTypeScriptでOffice スクリプトのコードを 書いています。以下の処理を行うコードを生成し、コピー&ペーストで貼り付けられる ようにしてください: セルA1からセルB21の範囲を元に集合横棒のグラフを追加する 46 Japan Microsoft 365 コミュニティ カンファレンス 2024 #JapanM365CC2024

47.
[beta]
Copilotにコードを書くのを手伝ってもらう(14)
生成されたコード例
function main(workbook: ExcelScript.Workbook) {
// セルA1からセルB21の範囲を取得
let sheet = workbook.getActiveWorksheet();
let range = sheet.getRange("A1:B21");
// グラフを追加
let chart = sheet.addChart(ExcelScript.ChartType.barClustered, range);

// グラフの位置を設定
chart.setPosition("D1", "H15");
}
47

Japan Microsoft 365 コミュニティ カンファレンス 2024

#JapanM365CC2024

48.

Copilotにコードを書くのを手伝ってもらう(15) 48 Japan Microsoft 365 コミュニティ カンファレンス 2024 #JapanM365CC2024

49.
[beta]
Copilotにコードを書くのを手伝ってもらう(16)
プロンプト
Web版Excelの処理を自動化するためにTypeScriptでOffice スクリプトのコードを
書いています。以下のコードが何を行っているかを日本語で簡潔に説明し、各行に
処理内容をコメントとして追加した後、コードをコピー&ペーストで貼り付けられるよう
にしてください:
function main(workbook: ExcelScript.Workbook) {
let sheet = workbook.getActiveWorksheet();
let range = sheet.getRange("A1:B21");
let chart = sheet.addChart(ExcelScript.ChartType.barClustered, range);
chart.setPosition("D1", "H15");
}
49

Japan Microsoft 365 コミュニティ カンファレンス 2024

#JapanM365CC2024

50.
[beta]
Copilotにコードを書くのを手伝ってもらう(17)
生成されたコード例
function main(workbook: ExcelScript.Workbook) {
// アクティブなワークシートを取得
let sheet = workbook.getActiveWorksheet();
// 範囲A1:B21を取得
let range = sheet.getRange("A1:B21");
// クラスタ化棒グラフを追加
let chart = sheet.addChart(ExcelScript.ChartType.barClustered, range);
// グラフの位置をD1からH15に設定
chart.setPosition("D1", "H15");
}
50

Japan Microsoft 365 コミュニティ カンファレンス 2024

#JapanM365CC2024

51.

Copilotにコードを書くのを手伝ってもらう(18) 51 Japan Microsoft 365 コミュニティ カンファレンス 2024 #JapanM365CC2024

52.

Copilotにコードを書くのを手伝ってもらう(19) プロンプト Web版Excelの処理を自動化するためにTypeScriptでOffice スクリプトのコードを 書いています。以下の処理を行うコードを生成し、コピー&ペーストで貼り付けられる ようにしてください: 現在選択中のシート上にある最初のグラフの画像をBase64エンコードして取得する 52 Japan Microsoft 365 コミュニティ カンファレンス 2024 #JapanM365CC2024

53.

Copilotにコードを書くのを手伝ってもらう(20) 生成されたコード例 function main(workbook: ExcelScript.Workbook) { // アクティブなワークシートを取得 let sheet = workbook.getActiveWorksheet(); // シート上のすべてのグラフを取得 let charts = sheet.getCharts(); // 最初のグラフを取得 let firstChart = charts[0]; // 最初のグラフの画像をBase64エンコードで取得 let base64Image = firstChart.getImageAsBase64(ExcelScript.PictureFormat.png); // 取得したBase64エンコードの画像をコンソールに出力 console.log(base64Image); } 53 Japan Microsoft 365 コミュニティ カンファレンス 2024 #JapanM365CC2024

54.

Copilotにコードを書くのを手伝ってもらう(21) 54 Japan Microsoft 365 コミュニティ カンファレンス 2024 #JapanM365CC2024

55.

Copilotにコードを書くのを手伝ってもらう(22) 正しいコード 生成されたコード例 function main(workbook: ExcelScript.Workbook) { // アクティブなワークシートを取得 let sheet = workbook.getActiveWorksheet(); function main(workbook: ExcelScript.Workbook) { // アクティブなワークシートを取得 let sheet = workbook.getActiveWorksheet(); // シート上のすべてのグラフを取得 let charts = sheet.getCharts(); // シート上のすべてのグラフを取得 let charts = sheet.getCharts(); // 最初のグラフを取得 let firstChart = charts[0]; // 最初のグラフを取得 let firstChart = charts[0]; // 最初のグラフの画像をBase64エンコードで取得 let base64Image = firstChart.getImage(); // 最初のグラフの画像をBase64エンコードで取得 let base64Image = firstChart.getImageAsBase64(ExcelScript.PictureFor mat.png); // 取得したBase64エンコードの画像をコンソールに出力 console.log(base64Image); // 取得したBase64エンコードの画像をコンソールに出力 console.log(base64Image); } } 55 Japan Microsoft 365 コミュニティ カンファレンス 2024 #JapanM365CC2024

56.

Copilotにコードを書くのを手伝ってもらう(23) 56 Japan Microsoft 365 コミュニティ カンファレンス 2024 #JapanM365CC2024

57.

Copilotにコードを書くのを手伝ってもらう(24) AIがいつも正しいコードを生成し てくれるとは限らないんだね! そう!だからこそ、ある程度 コードを書くための知識が必要 になってくるよ。 57 Japan Microsoft 365 コミュニティ カンファレンス 2024 #JapanM365CC2024

58.

Office スクリプトと Power Automateとの連携 #JapanM365CC2024

59.

Power Automateとは(1) ▪ Microsoftが提供するプロセスオートメーションサービス ▪ デジタルプロセスオートメーション(DPA)とロボティックプロセスオートメー ション(RPA)の両方の機能を備えている。 ▪ DPAはAPIベースでクラウドフローを通じてアプリケーション間のプロセス を自動化する。 → Power Automate ▪ RPAはUIベースでデスクトップフローを通じて人間の操作を模倣して自動 化する。 → Power Automate for desktop 参考1:https://ascii.jp/elem/000/004/095/4095721/ 参考2:https://learn.microsoft.com/ja-jp/power-automate/guidance/planning/various-types-process-automation?WT.mc_id=M365-MVP-4029057 59 Japan Microsoft 365 コミュニティ カンファレンス 2024 #JapanM365CC2024

60.

Power Automateとは(2) ▪ コネクタ:Power AutomateからOutlookやGmailなどの様々なクラウドサー ビスに接続するためのインターフェース ▪ フロー:Power Automateで作成する自動処理、流れ ▪ トリガー:フローを開始するイベントや条件で、特定のアクションを実行する きっかけ ▪ アクション:トリガーによって開始される具体的な処理 参考1:https://learn.microsoft.com/ja-jp/power-automate/glossary?WT.mc_id=M365-MVP-4029057 参考2:https://dekiru.net/article/25432/ Excel Online (Business)コネクタにはOffice スクリプトを実行するための アクションも用意されています。 60 Japan Microsoft 365 コミュニティ カンファレンス 2024 #JapanM365CC2024

61.

Power Automateとは(3) スクリプトの処理をPower Automateのフローに 組み込み、スクリプトにパラメーターを渡すこと も、スクリプトから値を返すこともできます。 61 Japan Microsoft 365 コミュニティ カンファレンス 2024 #JapanM365CC2024

62.

Office スクリプトとPower Automateの連携例:鮪はいくつある?(1) 鮠鰉鮃鮪鰭鱶鰒鮒鰤鯔鮪鱒鮴鰐鯏鯵鮎鮑鯔鯆鮪鰯鰻鰕鰍鰹鰈鱚鯨鯉鯒 鮗鮴鮭鯖鮫鰆鯢鮪鯱鱸鯛鮹鱈鰌鯔鯰鰊鯊鰰鱧鮠鮪鰉鮃鰭鱶鰒鮒鰤鯔鮪 鱒鮴鰐鱒鮴鰐鯏鯵鯔鯰鰊鯊鰰鱧鮠鮪鮒鰤鯔鮪鱒鮴鰐鯏鮠鰉鮃鮪鰭鱶鰒 鮒鰤鯔鮪鱒鮴鰐鯏鯵鮎鮑鯔鯆鮪鰯鰻鰕鰍鰹鰈鱚鯨鯉鯒鮗鮴鮭鯖鮫鰆鯢 鮪鯱鱸鯛鮹鱈鰌鯔鯰鰊鯊鰰鱧鮠鮪鰉鮃鰭鱶鰒鮒鰤鯔鮪鯔鯰鰊鯊鰰鯖鮫 上の魚へんの漢字が並んだ文字列から「鮪」 が 何個あるのかを数えてみよう! 62 Japan Microsoft 365 コミュニティ カンファレンス 2024 #JapanM365CC2024

63.
[beta]
Office スクリプトとPower Automateの連携例:鮪はいくつある?(2)
指定した文字列から任意の文字が何個あるのかを調べるコード
function main(workbook: ExcelScript.Workbook,
対象文字列: string = "鮠鰉鮃鮪鰭鱶鰒鮒鰤鯔鮪鱒鮴鰐鯏鯵鮎鮑鯔鯆鮪鰯鰻鰕鰍鰹鰈鱚鯨鯉
鯒鮗鮴鮭鯖鮫鰆鯢鮪鯱鱸鯛鮹鱈鰌鯔鯰鰊鯊鰰鱧鮠鮪鰉鮃鰭鱶鰒鮒鰤鯔鮪鱒鮴鰐鱒鮴鰐鯏鯵鯔鯰鰊

鯊鰰鱧鮠鮪鮒鰤鯔鮪鱒鮴鰐鯏鮠鰉鮃鮪鰭鱶鰒鮒鰤鯔鮪鱒鮴鰐鯏鯵鮎鮑鯔鯆鮪鰯鰻鰕鰍鰹鰈鱚鯨鯉
鯒鮗鮴鮭鯖鮫鰆鯢鮪鯱鱸鯛鮹鱈鰌鯔鯰鰊鯊鰰鱧鮠鮪鰉鮃鰭鱶鰒鮒鰤鯔鮪鯔鯰鰊鯊鰰鯖鮫",
検索文字列: string = "鮪"): number {

const regexp = new RegExp(検索文字列, "g");
return 対象文字列.match(regexp).length;
}
63

Japan Microsoft 365 コミュニティ カンファレンス 2024

#JapanM365CC2024

64.

Office スクリプトとPower Automateの連携例:鮪はいくつある?(3) 64 Japan Microsoft 365 コミュニティ カンファレンス 2024 #JapanM365CC2024

65.

Office スクリプトとPower Automateの連携例:鮪はいくつある?(4) 鮠鰉鮃鮪鰭鱶鰒鮒鰤鯔鮪鱒鮴鰐鯏鯵鮎鮑鯔鯆鮪鰯鰻鰕鰍鰹鰈鱚鯨鯉鯒 鮗鮴鮭鯖鮫鰆鯢鮪鯱鱸鯛鮹鱈鰌鯔鯰鰊鯊鰰鱧鮠鮪鰉鮃鰭鱶鰒鮒鰤鯔鮪 鱒鮴鰐鱒鮴鰐鯏鯵鯔鯰鰊鯊鰰鱧鮠鮪鮒鰤鯔鮪鱒鮴鰐鯏鮠鰉鮃鮪鰭鱶鰒 鮒鰤鯔鮪鱒鮴鰐鯏鯵鮎鮑鯔鯆鮪鰯鰻鰕鰍鰹鰈鱚鯨鯉鯒鮗鮴鮭鯖鮫鰆鯢 鮪鯱鱸鯛鮹鱈鰌鯔鯰鰊鯊鰰鱧鮠鮪鰉鮃鰭鱶鰒鮒鰤鯔鮪鯔鯰鰊鯊鰰鯖鮫 正解は 65 Japan Microsoft 365 コミュニティ カンファレンス 2024 14 個! #JapanM365CC2024

66.

Office スクリプトとPower Automateとの連携(1) ▪ MathオブジェクトやDateオブジェクト、RegExpオブジェクト(正規表現)といった、 一部の組み込みオブジェクトを活用できる。 • Office スクリプトで組み込みの JavaScript オブジェクトを使用する https://learn.microsoft.com/ja-jp/office/dev/scripts/develop/javascript-objects?WT.mc_id=M365MVP-4029057 • How to use Regex in Power Automate https://tachytelic.net/2021/04/power-automate-regex/ • Power AutomateとOffice Scriptを利用してメールからデータを抽出する仕組みを作る https://qiita.com/DEmodoriGatsuO/items/828dec69a24b25b60a00 66 Japan Microsoft 365 コミュニティ カンファレンス 2024 #JapanM365CC2024

67.

Office スクリプトとPower Automateとの連携(2) Fetch APIで外部APIを実行するコード async function main(workbook: ExcelScript.Workbook) { const fetchResult = await fetch("https://jsonplaceholder.typicode.com/users/5"); const jsonData: object[] = await fetchResult.json(); workbook.getFirstWorksheet().getRange("B2").setValue(jsonData["name"]); } Fetch APIを使えばコネクタが用意されていないAPI でも実行し放題じゃないの? 67 Japan Microsoft 365 コミュニティ カンファレンス 2024 #JapanM365CC2024

68.

Office スクリプトとPower Automateとの連携(3) https://learn.microsoft.com/ja-jp/office/dev/scripts/develop/externalcalls?WT.mc_id=M365-MVP-4029057 より Power AutomateのフローでOffice スクリプトを実行するときに サポートされていないAPIが含まれていると「*API* is not defined」が返されます。 68 Japan Microsoft 365 コミュニティ カンファレンス 2024 #JapanM365CC2024

69.

Office スクリプトとPower Automateの連携例:月別売上データ送信(1) 下図のような月別の売上データのグラフを Power Automateを利用してメール送信してみよう! 売上グラフ 売上テーブル 69 Japan Microsoft 365 コミュニティ カンファレンス 2024 #JapanM365CC2024

70.
[beta]
Office スクリプトとPower Automateの連携例:月別売上データ送信(2)
テーブルにデータを追加後グラフ画像をBase64形式で取得するコード
function main(
workbook: ExcelScript.Workbook,
年月: string,

売上: number
): string {
const shtTable = workbook.getWorksheet("月別売上");
const tblSales = shtTable.getTable("売上テーブル");

tblSales.addRow(-1, [年月, 売上]); //売上データ追加
const chtSales = shtTable.getChart("売上グラフ");
const base64Image = chtSales.getImage(); //グラフ画像をBase64形式で取得
return base64Image;
}

70

Japan Microsoft 365 コミュニティ カンファレンス 2024

#JapanM365CC2024

71.

Office スクリプトとPower Automateの連携例:月別売上データ送信(3) 71 Japan Microsoft 365 コミュニティ カンファレンス 2024 #JapanM365CC2024

72.

Office スクリプトとPower Automateの連携例:月別売上データ送信(4) Power Automateのフローから送信されたメール 72 Japan Microsoft 365 コミュニティ カンファレンス 2024 #JapanM365CC2024

73.

Office スクリプトとPower Automateの連携例:月別売上データ送信(5) 元のシナリオ: Office スクリプトと Power Automate を使用してグラフとテーブルの画像を電子メール で送信する https://learn.microsoft.com/ja-jp/office/dev/scripts/resources/samples/emailimages-chart-table?WT.mc_id=M365-MVP-4029057 73 Japan Microsoft 365 コミュニティ カンファレンス 2024 #JapanM365CC2024

74.

Office スクリプトとPower Automate for desktopとの連携(1) ▪ Excel Online (Business)アクショングループにある「スクリプトの実行」、「SharePoint ライブラリからスクリプトを実行する」アクションからスクリプトを実行 ▪ 要有償ライセンス 74 Japan Microsoft 365 コミュニティ カンファレンス 2024 #JapanM365CC2024

75.
[beta]
Office スクリプトとPower Automate for desktopとの連携(2)
生年月日から現在の年齢を計算するコード
function main(workbook: ExcelScript.Workbook, 年: number = 2001, 月:number = 2, 日:number = 14):
number {
const today = new Date();
const birthDate = new Date(年, 月 - 1, 日);
const monthDifference = today.getMonth() - birthDate.getMonth();
let age = today.getFullYear() - birthDate.getFullYear();
//誕生月がまだ来ていない、または誕生日がまだ来ていない場合は年齢を1歳引く

if (monthDifference < 0 || (monthDifference === 0 && today.getDate() < birthDate.getDate())) {age--;}
return age;
}
75

Japan Microsoft 365 コミュニティ カンファレンス 2024

#JapanM365CC2024

76.

Office スクリプトとPower Automate for desktopとの連携(3) 76 Japan Microsoft 365 コミュニティ カンファレンス 2024 #JapanM365CC2024

77.

Office スクリプトとPower Automate for desktopとの連携(4) 77 Japan Microsoft 365 コミュニティ カンファレンス 2024 #JapanM365CC2024

78.

まとめ #JapanM365CC2024

79.

まとめ ▪ Office スクリプトはExcelの処理をスクリプト(TypeScript)で自動化する機能。 ▪ 開発環境は貧弱。 ▪ スクリプトの実体はostsファイルで既定でOneDriveに保存される。 ▪ 組織内でスクリプトを共有する場合はSharePoint上で管理するのがオススメ。 ▪ スクリプトを書く際はCopilotも助けになる。 ▪ Power Automateとの連携が非常に強力。 79 Japan Microsoft 365 コミュニティ カンファレンス 2024 #JapanM365CC2024

80.

参考資料 #JapanM365CC2024

81.

参考資料(1) ▪ Excel での Office スクリプトの概要 https://support.microsoft.com/ja-jp/office/9fbe283d-adb8-4f13-a75b-a81c6baf163a?WT.mc_id=M365-MVP-4029057 ▪ Office スクリプトとしてアクションを記録する https://support.microsoft.com/ja-jp/office/453ab58d-708f-40a9-ab87-99a743bfa69a?WT.mc_id=M365-MVP-4029057 ▪ ボタンから Excel で Office スクリプトを実行する https://learn.microsoft.com/ja-jp/office/dev/scripts/develop/script-buttons?WT.mc_id=M365-MVP-4029057 ▪ Office スクリプトを実行するボタンを作成する https://support.microsoft.com/ja-jp/office/c686b2e7-62bc-4d76-9752-c94cdb625766?WT.mc_id=M365-MVP-4029057 ▪ Power Automate を使用した Office スクリプトの実行 https://learn.microsoft.com/ja-jp/office/dev/scripts/develop/power-automate-integration?WT.mc_id=M365-MVP-4029057 ▪ Excel Online (Business) https://learn.microsoft.com/ja-jp/connectors/excelonlinebusiness/?WT.mc_id=M365-MVP-4029057#run-script 81 Japan Microsoft 365 コミュニティ カンファレンス 2024 #JapanM365CC2024

82.

参考資料(2) ▪ Power Automateのデスクトップフローとクラウドフローを接続して使う〔準備編〕 https://ascii.jp/elem/000/004/095/4095721/ ▪ プロセス オートメーションの種類 https://learn.microsoft.com/ja-jp/power-automate/guidance/planning/various-types-processautomation?WT.mc_id=M365-MVP-4029057 ▪ Power Automate用語集 https://learn.microsoft.com/ja-jp/power-automate/glossary?WT.mc_id=M365-MVP-4029057 ▪ 【Power Automate】基本はトリガー、アクション、コネクタ、接続。仕組みと用語を理解しよう https://dekiru.net/article/25432/ ▪ Office スクリプトでの外部 API 呼び出しのサポート https://learn.microsoft.com/ja-jp/office/dev/scripts/develop/external-calls?WT.mc_id=M365-MVP-4029057 82 Japan Microsoft 365 コミュニティ カンファレンス 2024 #JapanM365CC2024

83.

参考資料(3) ▪ Power Automateで実行されている Office スクリプトのトラブルシューティング https://learn.microsoft.com/ja-jp/office/dev/scripts/testing/power-automatetroubleshooting?WT.mc_id=M365-MVP-4029057 ▪ Office Scripts ファイルのストレージと所有権 https://learn.microsoft.com/ja-jp/office/dev/scripts/overview/scriptstorage?tabs=business&WT.mc_id=M365-MVP-4029057 ▪ Office Scripts(Office スクリプト)の記事まとめ https://www.ka-net.org/blog/?p=12733 ▪ Office スクリプト&Power Automateハンズオン資料 https://github.com/kinuasa/OfficeScriptsHandsOn 83 Japan Microsoft 365 コミュニティ カンファレンス 2024 #JapanM365CC2024