【Officeアドイン】設定値を保存する2つの方法

Officeアドインエバンジェリストの佐藤です。
今回は、Officeアドインで設定値をアプリに保存する方法について記事を書きます。
 
 

■はじめに

Officeアドインで、設定値を保存したい場合。
例えば、アプリの表示言語を変更・設定できるようにしたい場合、
設定値を保持することが出来れば、アプリを再起動した場合でもわざわざ再設定する必要が無くなって便利ですね。
1
 
 
このような機能を実装したい場合、果たしてどのように開発すればいいでしょうか?
その方法について、実は2つの方法があります。
その2つの方法はどのようなものか?
その使い分けも含め、今回はその開発方法について解説します。

■解説

上記でも記載した通り、Officeアドインで設定値を保存する方法は主に2つあります。
それぞれメリット・デメリットあるので、それぞれ見てみましょう。
 

①Officeアドインの関数”Settings.set”を使用する

“Office.context.document.settings.set”というメソッドを使用することで、
Officeのドキュメントに名前/値のペアとして設定値を格納します。
参考:https://msdn.microsoft.com/ja-jp/library/office/fp161063.aspx
 
イメージとしては、Officeファイルに名前/値のペアとして設定値を格納することになります。
2
 
Officeファイルに格納するので、保存時とは別のOfficeファイルを開いた場合は、その設定値を読み込むことは出来ません。別の値として扱われます。
3
 
一方で、別ユーザーが同じファイルを読み込んだ場合は、すでに保存済みの設定値を読み込むことができます
これはファイルそのものに設定値を書き込みしているので、どのユーザーが開いても同じ設定値を利用することが出来るのです。
4
 
 

②HTML5の機能”LocalStorage”を使用する

LocalStorageは、HTML5で新たに追加された機能です。
ブラウザ側に名前/値のペアとして設定値を格納する事ができます。
http://wp.tech-style.info/archives/742
5
 
 
「OfficeなのにHTML5の機能を利用できるの?」と思う方もいるかもしれませんが、
OfficeアドインはれっきとしたWebアプリケーションなので、問題なくLocalStorageを使用できます。
OfficeアドインでLocalStorageを使用した場合、そのアプリ内では共通して同じ値として管理されます。
つまり、別のOfficeドキュメントでアプリを起動した場合でも、同じ設定値を保存・読込することが出来ます。わざわざ保存し直す必要がなくて便利ですね。
6
 
しかし、別ユーザーが同じファイルを開いたとしても、同じ設定値を使用することは出来ません。
そこはご注意下さい。
7
 
 

③結局どっちがいいの?

ぶっちゃけ用途によります。
以下、簡単にまとめてみました。
 
※Settings.set関数
・ドキュメントに設定値を格納する
・同じファイルを開いた場合、どのユーザーであっても同じ設定値を保存・読み込むことができる
・別のファイルを使用した場合、設定値は共有されない
・Excelセルに記載された金額・人物名など、各Officeファイルに紐付いた値を保持しておきたい場合におすすめ
 
※LocalStorage
・ブラウザに設定値を格納する
・保存時とは別のファイルを開いた場合でも、設定値を共有することができる
・別のユーザーが保存時のファイルを開いた場合、設定値は共有されない
・アプリの表示言語など、実行したユーザーごとに異なる設定を保持しておきたい場合におすすめ
 
開発したいアプリの用途によって使い分けることをおすすめします。
もちろん両方使用することもアリでしょう!
あなたの開発にお役立て下さい。
 
 

④サンプルプロジェクト

今回の記事を書くにあたり、動作確認用のサンプルプロジェクトを作成しました。
https://github.com/hirossyi73/OfficeSettingSave
8
Settings.set関数によって、もしくはLocalStorageによって、どのように設定値が保存されるか、
開くドキュメントを変更してみたり、開くユーザーを変更してみたりしてお試し下さい!
 
 

■おわりに(自己紹介)

まだまだマイナーながら、無限の可能性を秘めた「Officeアドイン」の解説記事を少しずつ執筆しています。
もっと詳しく知りたい!といったことや、この内容を解説して欲しい!ということがありましたら、
ブログのコメント欄やメールフォームにてお気軽にご連絡ください。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

コメント

お名前 *

ウェブサイトURL