Microsoftは、R言語を使って「Microsoft 365」スイートを操作できるオープンソースパッケージ「Microsoft365R」を発表した。認証やOneDriveの操作、SharePointサイトへのアクセスなどに役立つという。
この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。
Microsoftは2021年2月9日(米国時間)、R言語を使ってクラウドサービススイート「Microsoft 365」を操作するためのオープンソースパッケージ「Microsoft365R」を発表した。Rは、統計解析やその可視化などに役立つオープンソースのプログラミング言語とランタイム環境だ。
Microsoft365Rは「AzureGraph」パッケージで提供されるMicrosoft Graph APIを拡張し、「Microsoft SharePoint」と「Microsoft OneDrive」に対する軽量で強力なインタフェースを提供する。今後は「Microsoft Teams」と「Microsoft Outlook」もサポートする見込みだ。Teamsチャネルへのポストや、Outlookによる電子メール送信が可能になるという。
Microsoft365Rは、CRAN(The Comprehensive R Archive Network)で提供されており、GitHubから開発版をインストールすることもできる。
Microsoft365R関数のいずれかを初めて呼び出すと、他のWebアプリケーションと同様の方法で、Webブラウザを使った「Azure Active Directory」(AAD)認証ができる。ダイアログボックスの表示後、ユーザーは、自らの情報へのアクセスを許可するよう求められる。
Microsoft365Rは、AADテナント「aicatr」でアプリケーションとして登録されている。グループとSharePointサイトに対する読み出し/書き込みアクセスを必要とするため、管理者がユーザーテナントへのアクセスを許可する必要がある。
環境変数「CLIMICROSOFT365_AADAPPID」が設定されている場合、Microsoft365Rは認証のために、その値をアプリケーションIDとして使用する。あるいは、以下で紹介する関数を呼び出す際に、アプリケーションIDを引数として指定することもできる。
GitHubリポジトリでは、Microsoft365Rがブロックされた場合の対策情報がまとめられている。
個人用のOneDriveにアクセスするには、personal_onedrive関数を呼び出せばよい。「OneDrive for Business」にアクセスするには、business_onedrive関数を呼び出す。どちらの関数もR6クライアントのクラスms_driveのオブジェクトを返す。このオブジェクトは、ファイルやフォルダを操作するためのメソッドを備えている。
od <- personal_onedrive() odb <- business_onedrive(tenant="mycompany") # use the device code authentication flow in RStudio Server od <- personal_onedrive(auth_type="device_code") # list files and folders od$list_items() od$list_items("Documents") # upload and download files od$download_file("Documents/myfile.docx") od$upload_file("somedata.xlsx") # create a folder od$create_folder("Documents/newfolder")
open_itemメソッドを使うと、Webブラウザでファイルやフォルダを開くことが可能になる。「Microsoft Word」ドキュメントは「Word Online」で、「Microsoft Excel」スプレッドシートは「Excel Online」で開き、フォルダはOneDriveで表示される。
od$open_item("Documents/myfile.docx")
get_item_propertiesとset_item_propertiesを使うと、ファイルやフォルダのメタデータプロパティを取得し、設定できる。set_item_propertiesの場合、新しいプロパティを名前付き引数としてメソッドに指定する。ただし、変更できないプロパティもある。ファイルサイズや最終更新日など、一部のプロパティは読み取り専用だ。
get_item関数を使うと、ファイルやフォルダを表すオブジェクトを取得できる。このオブジェクトは、ドライブアイテムに適したメソッドを持っている。
od$get_item_properties("Documents/myfile.docx") # rename a file -- version control via filename is bad, mmkay od$set_item_properties("Documents/myfile.docx", name="myfile version 2.docx") # alternatively, you can call the file object's update() method item <- od$get_item("Documents/myfile.docx") item$update(name="myfile version 2.docx")
SharePointのサイトにアクセスするには、sharepoint_site関数を使用し、サイトURLまたはIDを指定する。
site <- sharepoint_site("https://myaadtenant.sharepoint.com/sites/my-site-name")
クライアントオブジェクトは、ドライブ(ドキュメントライブラリ)やリストを取り出すメソッドを備えている。サイト内の全てのドライブを表示するには、list_drivesメソッドを使用し、特定のドライブを取り出すには、get_drive関数を用いる。先ほどのOneDriveクライアントと同様に、各ドライブはクラスms_driveのオブジェクトになっている。
# list of all document libraries under this site site$list_drives() # default document library drv <- site$get_drive() # same methods as for OneDrive drv$list_items() drv$open_item("teamproject/plan.xlsx")
サイト内の全てのリストを表示するには、get_listsメソッドを使用し、特定のリストを取り出すには、リスト名かIDを指定して、get_listメソッドを使う。
site$get_lists() lst <- site$get_list("my-list")
リストのアイテムをデータフレームとして取得するには、list_items関数を使う。この関数には、行のサブセットと列のサブセットを取得するための引数としてfilterとselectがある。filterは文字列として提供されるOData表現でなければならず、selectはカンマ区切り列リストを含む文字列でなければならない。filter表現の列名は、先頭に文字列「fields/」を付ける必要がある。アイテムのメタデータと区別するためだ。
# return a data frame containing all list items lst$list_items() # get subset of rows and columns lst$list_items( filter="startsWith(fields/firstname, 'John')", select="firstname,lastname,title" )
list_subsites関数とget_subsite関数でサブサイトを取り出すこともできる。これらもSharePointサイトオブジェクトを返すので、今回紹介した全てのメソッドは、サブサイトのために利用できる。
Copyright © ITmedia, Inc. All Rights Reserved.