none
Outlookのアドイン開発について RRS feed

  • 質問

  • いつもお世話になっております。

    表題の件、Outlookアドイン(予定表のアドイン)のチュートリアル

    (https://docs.microsoft.com/ja-jp/outlook/add-ins/addin-tutorial)を参考に

    実装を進めている所、アドイン(Javascript)から外部サーバと通信を行って情報の取得を行う事を検討しているのですが

    OfficeオンラインではAjaxで通信が可能ですが、インストール版Office365ではエラーとなり

    ("readyState":0,"status":0,"statusText":"error")通信不可でした。

    コンテンツのJavascriptはnode.jsにてローカルPC上で動作させてます。

    マイクロソフトのヘルプより、外部サーバと通信する場合はFlowを利用する必要があるようなのですが

    Flowを利用してアドインから外部サーバにアクセスする方法についてご教授願います。

    Azure等を利用する必要があれば、Azureのサブスクリプション等も必要でしょうか?

    office365用アドイン開発について色々と調べてみているのですが、

    これといった情報が見つからず、停滞している状態です。

    よろしくお願いします。

    2019年5月8日 6:12

回答

  • ..Zooさん、こんにちは。フォーラムオペレーターのHarukaです。
    ご返信頂きありがとうございます。

    >Ajaxで送信しているURLやパラメータが正しい事はブラウザより確認し、正常なXMLデータを受信する事も確認しております。
    →Ajaxが正しくリクエストを送信し、outlookアドインで期待されるレスポンスを受信するということですか。
    Webブラウザのコンソールタブにエラーはありますか。
    外部WebサーバでアドインのCORSを有効にしましたか。

    >やはり問題としては、Outlookクライアント用のAdd-InsでAjax通信が出来ない事です。
    →アドインからWebサーバーへのAjaxリクエストを行うことができます。
    Ajaxからリクエストを送信したコードとWebサーバーのメソッド定義をご共有いただけますでしょうか。
    問題を再現できるデモが役に立つでしょう。
    これが私のプロジェクトで使用したミニデモです。
    https://github.com/Edward-Zhou/CommentAddIn/blob/master/CommentAddInWeb/Dialog/Dialog.html#L38 

    もう1点、外部Webサーバーにリクエストを送信するajaxを使用して新しいWebプロジェクトを作成することをお勧めします、それは動作しますか。

    どうぞよろしくお願いします。


    MSDN/ TechNet Community Support Haruka

    ~参考になった投稿には「回答としてマーク」をご設定ください。なかった場合は「回答としてマークされていない」も設定できます。同じ問題で後から参照した方が、情報を見つけやすくなりますので、
    ご協力くださいますようお願いいたします。また、MSDNサポートに賛辞や苦情がある場合は、MSDNFSF@microsoft.comまでお気軽にお問い合わせください。~

    • 回答としてマーク ..Zoo 2019年5月16日 1:14
    2019年5月14日 2:19
    モデレータ
  • ..Zooさん、こんにちは。フォーラムオペレーターのHarukaです。
    ご返信頂きありがとうございます。

    >Office Onlineのoutlookアドインは期待されるレスポンスを受信可能です。しかし、インストール版Office365のアドインからはHTTPリクエストがWebサーバに到達しません。
    →これはどういう意味ですか。 
    このアドインはOutlookオンラインでは機能しますが、Outlookクライアントでは機能しないということでしょうか。
    あなたのAjaxリクエストをOutlookクライアントアドインとphpサーバーでテストしたところ、それは正しく動作し、期待される値を受けました。

    >インストール版Office365のアドインの場合URLはどのように変わりますか?
    →これはどういう意味ですか。

    >再度以下のURLを参考にnode.jsを利用してプロジェクトを作成し直し確認しましたが、結果は同じでした。
    →私は、それがOffice AddIn Web Projectに固有のものであるかどうかを確認するために、
    Office Addinを使用せずにWebプロジェクトを作成することができることを意味します。

    どうぞよろしくお願いします。


    MSDN/ TechNet Community Support Haruka

    ~参考になった投稿には「回答としてマーク」をご設定ください。なかった場合は「回答としてマークされていない」も設定できます。同じ問題で後から参照した方が、情報を見つけやすくなりますので、
    ご協力くださいますようお願いいたします。また、MSDNサポートに賛辞や苦情がある場合は、MSDNFSF@microsoft.comまでお気軽にお問い合わせください。~

    • 回答としてマーク ..Zoo 2019年5月16日 1:13
    2019年5月15日 6:01
    モデレータ

すべての返信

  • いつもお世話になっております。

    Office365のOutlookで予定表の内容と外部サーバのカレンダーの内容を
    同期するアドインを開発する予定で調査しているのですが
    アドインのJavascriptから外部のWebサーバにAjax通信を行い、外部サーバのカレンダー内容を
    取得したいのですが通信できず困っています。
    ステータスを確認すると0ですがエラー?タイムアウト?でした。
    ("readyState":0,"status":0,"statusText":"error")

    アドインのJavascriptからhttps通信を行う方法をご教授願います。

    表題の件、Outlookアドイン(予定表のアドイン)のチュートリアル
    (https://docs.microsoft.com/ja-jp/outlook/add-ins/addin-tutorial)を参考に
    実装を進めています。

    よろしくお願いします。

    2019年5月10日 1:41
  • ..Zooさん、こんにちは。フォーラムオペレーターのHarukaです。
    MSDNフォーラムにご投稿くださいましてありがとうございます。

    >インストール版Office365ではエラーとなり
    →このエラーの原因となる関連コードをご共有いただけますでしょうか。

    >マイクロソフトのヘルプより、外部サーバと通信する場合はFlowを利用する必要があるようなのですが
    →Flowを利用するとはどういう意味ですか。
    この件についてマイクロソフトの説明を教えていただけますでしょうか。
    私のオプションでは、アドインから外部サーバーにリソースにアクセスするために、ajaxでリクエストを送信することができます。

    >Azure等を利用する必要があれば、Azureのサブスクリプション等も必要でしょうか?
    →Azureで何を処理しますか。
    AzureでOffice AddIn Web Siteをホストしますか。
    Office AddIn Web Siteは、任意のパブリックアクセス可能なサーバーにホストできます。

    Azure web app サービスでホストする必要がある場合は、Azure サブスクリプションが必要になります。

    どうぞよろしくお願いします。


    MSDN/ TechNet Community Support Haruka

    ~参考になった投稿には「回答としてマーク」をご設定ください。なかった場合は「回答としてマークされていない」も設定できます。同じ問題で後から参照した方が、情報を見つけやすくなりますので、
    ご協力くださいますようお願いいたします。また、MSDNサポートに賛辞や苦情がある場合は、MSDNFSF@microsoft.comまでお気軽にお問い合わせください。~

    2019年5月10日 7:18
    モデレータ
  • フォーラムオペレーターのHaruka様ご連絡ありがとうございます。

    >    >インストール版Office365ではエラーとなり
    >    →このエラーの原因となる関連コードをご共有いただけますでしょうか。

    ajaxで通信した結果ステータスを確認すると0ですがエラーになります。
    タイムアウトとの事ですね?
    ("readyState":0,"status":0,"textStatus":"error")
    コードはこんな感じです。
    $.ajax({
        async: false,
        url: 'https://domain/dir/getData',
        type: 'POST',
        success: function(data){

        },
        error: function(XMLHttpRequest, textStatus, errorThrown){

        }
    });

    >    >マイクロソフトのヘルプより、外部サーバと通信する場合はFlowを利用する必要があるようなのですが
    >    →Flowを利用するとはどういう意味ですか。
    >    この件についてマイクロソフトの説明を教えていただけますでしょうか。
    >    私のオプションでは、アドインから外部サーバーにリソースにアクセスするために、ajaxでリクエストを送信することができます。

    上記のようなコードを利用してますか?別な方法があれば、ご教授願います。

    >    >Azure等を利用する必要があれば、Azureのサブスクリプション等も必要でしょうか?
    >    →Azureで何を処理しますか。
    >    AzureでOffice AddIn Web Siteをホストしますか。
    >    Office AddIn Web Siteは、任意のパブリックアクセス可能なサーバーにホストできます。

    Add-InsをOfficeストアに登録するためにAzureの登録は不要でしょうか?
    WebサーバとしてAzureを利用しない場合はOfficeストアへのAdd-Insの登録だけで問題ないでしょうか?

    以上、よろしくお願いします。

    2019年5月10日 9:51
  • ..Zooさん、こんにちは。フォーラムオペレーターのHarukaです。
    ご返信頂きありがとうございます。

    >Add-InsをOfficeストアに登録するためにAzureの登録は不要でしょうか?
    →はい、不要です。
    「Officeストア」とはどういう意味ですか。 
    AppStoreを意味すると思いますが、アプリストアでアドインを登録するための要件については、以下のリンクを参照してください。

    AppSource と Office 内でソリューションを使用できるようにする
    https://docs.microsoft.com/ja-jp/office/dev/store/submit-to-the-office-store

    OutlookオンラインまたはOutlookクライアントのどちらで開発しますか。 
    それがoffice addinのjsに関連しているかどうかをチェックする前に、postmanからリクエストを送ることをお勧めします。
    それは期待される結果を返しますでしょうか。
    もしそうなら、postmanでのリクエストを共有してください。
    そしてWebブラウザまたはFiddlerの[ネットワーク]タブでajaxからのリクエストを確認して、リクエストをキャプチャできます。

    どうぞよろしくお願いします。


    MSDN/ TechNet Community Support Haruka

    ~参考になった投稿には「回答としてマーク」をご設定ください。なかった場合は「回答としてマークされていない」も設定できます。同じ問題で後から参照した方が、情報を見つけやすくなりますので、
    ご協力くださいますようお願いいたします。また、MSDNサポートに賛辞や苦情がある場合は、MSDNFSF@microsoft.comまでお気軽にお問い合わせください。~

    2019年5月13日 5:59
    モデレータ
  • フォーラムオペレーターのHaruka様ご連絡ありがとうございます。

    >>Add-InsをOfficeストアに登録するためにAzureの登録は不要でしょうか?
    >→はい、不要です。
    >「Officeストア」とはどういう意味ですか。
    >AppStoreを意味すると思いますが、アプリストアでアドインを登録するための要件については、以下のリンクを参照してください。

    ->はい。その通りです。AppStoreです。

    >OutlookオンラインまたはOutlookクライアントのどちらで開発しますか。

    ->Outlookオンライン用のAdd-InsとOutlookクライアント用のAdd-Insは別に開発する必要があるのですか?
      同じAdd-Insで共有できると考えてました。
      現状、Ajaxの通信以外の部分は同じAdd-Insで動作を確認してます。

    >それがoffice addinのjsに関連しているかどうかをチェックする前に、postmanからリクエストを送ることをお勧めします。
    >それは期待される結果を返しますでしょうか。
    >もしそうなら、postmanでのリクエストを共有してください。
    >そしてWebブラウザまたはFiddlerの[ネットワーク]タブでajaxからのリクエストを確認して、リクエストをキャプチャできます。

    ->Ajaxで送信しているURLやパラメータが正しい事はブラウザより確認し、正常なXMLデータを受信する事も
      確認しております。
      やはり問題としては、Outlookクライアント用のAdd-InsでAjax通信が出来ない事です。OutlookクライアントからWebサーバに
      リクエストが届いてない状況です。

    以上、よろしくお願いします。


    2019年5月13日 7:43
  • ..Zooさん、こんにちは。フォーラムオペレーターのHarukaです。
    ご返信頂きありがとうございます。

    >Ajaxで送信しているURLやパラメータが正しい事はブラウザより確認し、正常なXMLデータを受信する事も確認しております。
    →Ajaxが正しくリクエストを送信し、outlookアドインで期待されるレスポンスを受信するということですか。
    Webブラウザのコンソールタブにエラーはありますか。
    外部WebサーバでアドインのCORSを有効にしましたか。

    >やはり問題としては、Outlookクライアント用のAdd-InsでAjax通信が出来ない事です。
    →アドインからWebサーバーへのAjaxリクエストを行うことができます。
    Ajaxからリクエストを送信したコードとWebサーバーのメソッド定義をご共有いただけますでしょうか。
    問題を再現できるデモが役に立つでしょう。
    これが私のプロジェクトで使用したミニデモです。
    https://github.com/Edward-Zhou/CommentAddIn/blob/master/CommentAddInWeb/Dialog/Dialog.html#L38 

    もう1点、外部Webサーバーにリクエストを送信するajaxを使用して新しいWebプロジェクトを作成することをお勧めします、それは動作しますか。

    どうぞよろしくお願いします。


    MSDN/ TechNet Community Support Haruka

    ~参考になった投稿には「回答としてマーク」をご設定ください。なかった場合は「回答としてマークされていない」も設定できます。同じ問題で後から参照した方が、情報を見つけやすくなりますので、
    ご協力くださいますようお願いいたします。また、MSDNサポートに賛辞や苦情がある場合は、MSDNFSF@microsoft.comまでお気軽にお問い合わせください。~

    • 回答としてマーク ..Zoo 2019年5月16日 1:14
    2019年5月14日 2:19
    モデレータ
  • フォーラムオペレーターのHaruka様ご連絡ありがとうございます。

    >>Ajaxで送信しているURLやパラメータが正しい事はブラウザより確認し、正常なXMLデータを受信する事も確認しております。
    >→Ajaxが正しくリクエストを送信し、outlookアドインで期待されるレスポンスを受信するということですか。
    >Webブラウザのコンソールタブにエラーはありますか。
    >外部WebサーバでアドインのCORSを有効にしましたか。

    ->Office Onlineのoutlookアドインは期待されるレスポンスを受信可能です。しかし、インストール版Office365のアドイン
      からはHTTPリクエストがWebサーバに到達しません。
      ブラウザからURLを手動で実行した場合は正常に動作します。

    >>やはり問題としては、Outlookクライアント用のAdd-InsでAjax通信が出来ない事です。
    >→アドインからWebサーバーへのAjaxリクエストを行うことができます。
    >Ajaxからリクエストを送信したコードとWebサーバーのメソッド定義をご共有いただけますでしょうか。

    Add-insの(index.js)とWebサーバのget_xml.phpを以下に示します。
    AjaxのURLはダミーです。

    index.js

    /*
     * Copyright (c) Microsoft Corporation. All rights reserved. Licensed under the MIT license.
     * See LICENSE in the project root for license information.
     */
    document.getElementById("boo").innerText = "Start"; 
    
    // The initialize function must be run each time a new page is loaded
    Office.initialize = (reason) => {
    
    document.getElementById("message").innerText = "111"; 
    
    	$(document).ready(function() {
    
    		$.ajax({
    //			async: false,
    			url: 'https://domain/get_xml.php',
    			type: 'POST',
    			success: function(result, textStatus, xhr) {
    				status = ($(result).find('status').text() == 1)? true : false;
    
    				if(!status){
    
    				}else{
    		    	}
    $('#message').html('--OK--');
    			},
    			error: function(XMLHttpRequest, textStatus, errorThrown){
    //mmsg = 'XMLHttpRequest=' + JSON.stringify(XMLHttpRequest) + ', 失敗 status=' + textStatus + ', エラー詳細=' + errorThrown;
    $('#message').html('--NG--');
    				return;
    			}
    		});
    
    	});//$(document).ready(function() {
    
    }
    

    get_xml.php

    <?php
    
    	$retStat = '1';//正常
    
    	//DOMオブジェクト生成
    	$dom = new DomDocument('1.0');	//Version=1.0
    	$dom->encoding = "UTF-8";		//文字コード=UTF-8
    
    	$CommonParam = $dom->appendChild($dom->createElement('Root'));
    	$status = $CommonParam->appendChild($dom->createElement('status'));
    	$status->appendChild($dom->createTextNode($retStat));
    
    	//ヘッダー(XML形式)
    	header('Content-type: application/xml; Charset=utf-8');
    	//クロスドメイン対策を追加
    	header("Access-Control-Allow-Origin: *");
    
    	//出力XMLを整形(改行,タブ)する
    	$dom->formatOutput = true;
    	echo $dom->saveXML();
    
    ?>

    >問題を再現できるデモが役に立つでしょう。
    >これが私のプロジェクトで使用したミニデモです。
    >https://github.com/Edward-Zhou/CommentAddIn/blob/master/CommentAddInWeb/Dialog/Dialog.html#L38

    ->ミニデモの共有ありがとうございます。
      ajaxのURLが"/api/comments/convertOOXmlToComments",となっておりますが同一ドメインのコンテンツを
      指定しているのでしょうか?
      インストール版Office365のアドインの場合URLはどのように変わりますか?

    >もう1点、外部Webサーバーにリクエストを送信するajaxを使用して新しいWebプロジェクトを作成することをお勧めします、それは動作しますか。
    ->再度以下のURLを参考にnode.jsを利用してプロジェクトを作成し直し確認しましたが、結果は同じでした。
    https://docs.microsoft.com/ja-jp/outlook/add-ins/addin-tutorial

    度々申し訳ございませんが、よろしくお願いします。

    2019年5月14日 6:24
  • ..Zooさん、こんにちは。フォーラムオペレーターのHarukaです。
    ご返信頂きありがとうございます。

    >Office Onlineのoutlookアドインは期待されるレスポンスを受信可能です。しかし、インストール版Office365のアドインからはHTTPリクエストがWebサーバに到達しません。
    →これはどういう意味ですか。 
    このアドインはOutlookオンラインでは機能しますが、Outlookクライアントでは機能しないということでしょうか。
    あなたのAjaxリクエストをOutlookクライアントアドインとphpサーバーでテストしたところ、それは正しく動作し、期待される値を受けました。

    >インストール版Office365のアドインの場合URLはどのように変わりますか?
    →これはどういう意味ですか。

    >再度以下のURLを参考にnode.jsを利用してプロジェクトを作成し直し確認しましたが、結果は同じでした。
    →私は、それがOffice AddIn Web Projectに固有のものであるかどうかを確認するために、
    Office Addinを使用せずにWebプロジェクトを作成することができることを意味します。

    どうぞよろしくお願いします。


    MSDN/ TechNet Community Support Haruka

    ~参考になった投稿には「回答としてマーク」をご設定ください。なかった場合は「回答としてマークされていない」も設定できます。同じ問題で後から参照した方が、情報を見つけやすくなりますので、
    ご協力くださいますようお願いいたします。また、MSDNサポートに賛辞や苦情がある場合は、MSDNFSF@microsoft.comまでお気軽にお問い合わせください。~

    • 回答としてマーク ..Zoo 2019年5月16日 1:13
    2019年5月15日 6:01
    モデレータ
  • フォーラムオペレーターのHaruka様
    ご連絡ありがとうございます。

    >このアドインはOutlookオンラインでは機能しますが、Outlookクライアントでは機能しないということでしょうか。

    ->その通りです。
      クライアントPCで確認した所、ウィルスセキュリティーソフトのFireWallがブロックしている可能性が出てきましたので
      確認をとります。
      詳細が確認でき次第別途連絡します。

    >あなたのAjaxリクエストをOutlookクライアントアドインとphpサーバーでテストしたところ、それは正しく動作し、期待される値を受けました。

    ->検証頂き、お手数をおかけしました。

    以上、よろしくお願いします。

    2019年5月15日 9:17