Excel2016またはそれ以降で動作するExcelアドイン開発

# はじめに

Excelアドインは、2017年7月現在、Excel2013、Excel2016で動作しますが、
ExcelApi1.1はExcel2013またはそれ以降、ExcelApi1.3はExcel2016またはそれ以降で動作します。
Excel JavaScript APIのバージョンアップ（ExcelApi1.3）により、今まで不可能だったことができるようになりました。
例えば、セル上の文字を太字にする等、セルの書式を指定することができます。
しかし、この機能が使えるのは、Excel2016またはそれ以降です。
Excel2013ではこの機能が使えないため、使用可能なアプリケーションをExcel2016またはそれ以降に限定する方法について、ご説明させていただきます。
より高機能なExcelアドインを提供するために、ExcelApi1.3を設定する方法です。

# 設定するのは、マニフェスト

以下は、[Office のホストと API の要件を指定するオプション](https://msdn.microsoft.com/ja-jp/library/office/dn535871.aspx#Anchor_1)からの抜粋です。
> アドインには、特定のAPIメンバーが必要ですか？
>　↓　はい
>APIを利用できるようにするために、マニュフェストのRequirements要素を設定する

デフォルトのマニフェストには、ExcelApiに関する記述はありません。
フローチャートでは、Hosts要素の設定後の判定となっています。

# Requirements要素の設定
Excel2016またはそれ以降に対応しているExcelApiは、Version1.3以上です。
なので、以下のとおり最小バージョンを1.3に設定することにより、Excel2016またはそれ以降で使用できるExcelアドインになります。
具体的には、例えばVisual Studioで、新しいプロジェクトにより生成されるマニフェストファイルに以下のとおり、追記します。

```xml:ExcelWebAddinManifest.xml
（以上、省略）
  <Hosts>
    <Host Name="Workbook" />
  </Hosts>
　<!-- ここから追加 -->
  <Requirements>
    <Sets DefaultMinVersion="1.3">
      <Set Name="ExcelApi" MinVersion="1.3" />
    </Sets>
  </Requirements>
　<!-- ここまで追加 -->
  <DefaultSettings>
（以下、省略）
```

HostsとDefaultSettingsの間に、Requirementsを追加します。
これだけで、Excel2013での使用ができなくなります。

# ExcelApiのスケジュール
[Excel JavaScript API requirement sets](https://dev.office.com/reference/add-ins/requirement-sets/excel-api-requirement-sets)を見ると、現在（OfficeOnline上でのみ動作の）Beta版でExcelApi1.7まであるようです。
抜粋です。

|Requirement set |Office 2016 for Windows* |Office 2016 for iPad |Office 2016 for Mac |Office Online |Office Online Server| 
|:---------------|:------------------------|:--------------------|:-------------------|:-------------|:------------|
|ExcelApi1.7 Beta |Version 1704 (Build 8201.2001) or later |Coming soon |Coming soon |April 2017 |Coming soon| 
|ExcelApi1.6 |Version 1704 (Build 8201.2001) or later |Coming soon |Coming soon |April 2017 |Coming soon |
|ExcelApi1.5 |Version 1703 (Build 8067.2070) or later |Coming soon |Coming soon |March 2017 |Coming soon |
|ExcelApi1.4 |Version 1701 (Build 7870.2024) or later |Coming soon |Coming soon |January 2017 |Coming soon |
|ExcelApi1.3 |Version 1608 (Build 7369.2055) or later |1.27 or later |15.27 or later  |September 2016 |Version 1608 (Build 7601.6800) or later |
|ExcelApi1.2 |Version 1601 (Build 6741.2088) or later |1.21 or later |15.22 or later |January 2016 |
|ExcelApi1.1 |Version 1509 (Build 4266.1001) or later | 1.19 or later |15.20 or later |January 2016 |

> *Note: The build number for Office 2016 installed via MSI is 16.0.4266.1001. This version only contains the ExcelApi 1.1 requirement set.

[Word JavaScript API requirement sets](https://dev.office.com/reference/add-ins/requirement-sets/word-api-requirement-sets)
現時点では、WordApiは1.3までみたいです。

# 参考
[Office のホストと API の要件を指定する](https://msdn.microsoft.com/ja-jp/library/office/dn535871.aspx)
[Excel JavaScript API requirement sets](https://dev.office.com/reference/add-ins/requirement-sets/excel-api-requirement-sets)
[Excel JavaScript API requirement sets(GitHub)](https://github.com/OfficeDev/office-js-docs/blob/master/reference/requirement-sets/excel-api-requirement-sets.md)

# おわりに
JavaScriptファイル上で、「Excel 2016を使用していない場合に、フォールバック ロジックを使用してExcel 2013ユーザーへ機能限定提供する方法」もありますが、できることが強化されたExcelApi1.3を使用可能な、Excel2016またはそれ以降に限定する手法をご紹介しました。

最後までお読みいただきありがとうございました。