5
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

ScriptLabの私的メモ

Last updated at Posted at 2018-05-31

まだ書きかけだけど、晒します。

前記事に、Officeアドインの開発を試してみる方法があります。

ScriptLabとは

OfficeでJavaScript API を使えるようにする Add-In です。
ScriptLabは、Excel、Word、PowerPoint(Office 2013以降、Office Online、Office for Mac)で動作します。
ソースコードはのコミュニティに公開されています。
ScriptLabを使うと以下のことが出来るようになります。

  • JavaScript、HTML、CSS、およびウェブ上のライブラリやデータへの参照を含むことができるコードスニペットの作成編集。
  • スニペットを実行し、タスクペインとOfficeで即座に結果をに確認できます。
  • サンプルを選択するだけで、簡単にお試しができます。
  • GitHubGist を使ってスニペットを保存し共有することが出来ます。要GitHubアカウント
  • IntelliSenseの助けを借りてJavaScript APIを学習できます。
  • TypeScript2.0以上の機能が利用できます。例えば、ラムダ関数、テンプレート文字列、async / await
  • Office Add-Inのプロトタイプ開発が手軽にできます。
  • ベータ版にすると、ユーザ定義関数を作成して使用できます。
  • 最新のProduction Version1.1.0(2018-06-01)ではユーザ定義関数が有効になりました。

インストール

他のソフトウェアをインストールしたり、環境を設定する必要はありません。
Officeを利用している限り、数秒で起動できます。
ExcelにScriptLabの導入は、挿入タブからストアをクリックしOfficeアドイン検索のScriptで見つかるので、追加します。
すると、リボンタブにScript Labのタグが表れます。
Script Groupに、Code,Run,Functionsがリボンとして表示されます。

Code

Script GroupのCodeをクリックするとExcelの右側に、Code窓が開きます。
最初はSamplesが窓中に表示されると思います。
一番左隅の三本線をクリックすると、黒い画面と三本線の隣に人型のアイコンが表示されるので、
それをクリックして、GITHUB にログインします。
一度ログインすると、次回から自動的にGITHUBに接続してくれます。(解除する方法はないのかな?)
+New snippetを押すと、Code/Scriptに以下のコードが表示されます。

$("#run").click(() => tryCatch(run));

async function run() {
    await Excel.run(async (context) => {

        OfficeHelpers.UI.notify("Your code goes here");

        await context.sync();
    });
}

/** Default helper for invoking an action and handling errors. */
async function tryCatch(callback) {
    try {
        await callback();
    }
    catch (error) {
        OfficeHelpers.UI.notify(error);
        OfficeHelpers.Utilities.log(error);
    }
}

Run

リボンRunを押すと、Code/HTML の内容が表示されます。

<button id="run" class="ms-Button">
    <span class="ms-Button-label">Run</span>
</button>

Functions

/** @CustomFunction */
function add10(x: number): number {
 return x + 10;
}

をコード(スニペット名:Add10)に貼り付けて、functionsをリフレッシュすると使用出来るようになります。
=ScriptLab.Add10.add10(…)で呼び出せます。この場合、非同期なので、動作が少し遅いので、
ここを見て同期にすると返しが早くなります。

ScriptLabを使用しない場合

  1. 適当なディレクトリ(例えばC:Manufest)を作成します。
  2. 作成したディレクトリを右クリックで、アクセスを許可し、共有領域とします。
  3. サンプルのxmlファイルを共有にしたディレクトリにコピーします。
  4. nginxを立ち上げ、WEBアクセス出来るように、サンプルをコピーします。(ポート番号は同じにする)
  5. Excelのファイル/オプションでセキュリティセンターを開き、セキュリティセンターの設定を開きます。
  6. セキュリティセンターの設定から、信頼できるアドイン カタログを開きます。
  7. 信頼できるカタログのアドレスに、共有領域のフルパスを入力しカタログを追加します。
  8. その際に、メニューに表示するのチェックを忘れずに。
  9. 挿入タブから個人用アドインをクリックするとOffce アドインが表示されます。
  10. 共有ホルダーが登録することにより表示されるので、クリックすると追加したxmlの内容が表示されています。
  11. サンプルを選んで、追加ボタンを押すとアドインが追加されます。
5
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?