Excel のクラウドな開発 (OneDrive 編)


環境 :
OneDrive (旧 Windows Live SkyDrive)
Excel 2010

Excel のクラウドな開発

こんにちは。

OneDrive (旧 SkyDrive, 無償) においても、前回 説明した Excel Online (旧 Excel Web App) が使用可能です。

補足 : ただし、OneDrive の Office Online (旧 Office Web App) は、Office 365 (SharePoint) とすべて同一の機能ではなく、表示を中心としたモードになっています。

Windows Live SkyDrive の Excel Online では、前回説明した Office 365 (SharePoint 2010) の場合と比べ活用方法はかなり限定されます。しかし、Office 365 と異なり、匿名ユーザーを対象に、ブログなどのさまざまな要素で活用できるので、よりクラウドらしい連携・活用が可能です。

では、いくつか例を紹介しましょう。

まず、OneDrive を使用すると、アップロードした Excel、PowerPoint のファイルを対象に、iframe を使った Office Online の UI 部品としての貼り付け (Embed) が可能です。

補足 : ここでは Excel を例に説明しますが、PowerPoint のスライド ショーも、ブログなどに張り付けて使用できます。(こちら の投稿は PowerPoint を貼り付けています。)

 

前回 作成した Excel ワークブック (ただし、発行オプションの設定前) と同じようにテーブルやグラフを作成し、まずは、OneDrive にそのままアップロードします。
OneDrive 上でアップロードしたブックを右クリックして [埋め込み] を選択すると、下図のように埋め込み用の HTML (iframe) のコードが取得できます。

以下のような URL です。

<iframe src="https://onedrive.live.com/embed?cid=9C0AF81B735E29EA&resid=9C0AF81B735E29EA%2111502&authkey=AOEFg6lwFXrEVnk&em=2" width="402" height="346" frameborder="0" scrolling="no"></iframe>

このタグをブログなどに (HTML として) 張り付けると、下記の通り、Excel Online が iframe としてこのブログに張り付けられているのがわかります。(下記は、実際に貼り付けた本物です。)

補足 : なお、この Excel ファイルに匿名ユーザー (anonymous) でアクセスできるように、あらかじめ、OneDrive で権限設定をおこなっておきましょう。

補足 : 上記 (embedded HTML) の URL を https (SSL) に変更しても接続できるので、Office 365 のページ上になど張り付けることもできます。(前回使用した「コンテンツ エディター Web パーツ」や、サンドボックス ソリューションで開発した Web パーツなどを使って、OneDrive 上の Excel Online を Office 365 の SharePoint Online 上に表示できます。)

これだけでは、ちょっとおもしろくありませんね。

上記では表示だけしかできませんが、シート内に値を入力させて、対話的に計算させることができます。
貼り付けの URL に、下記太字の通り AllowInteractivity、AllowTyping を設定するだけです。この設定により、対話モードとなり、表や「時給」の箇所をダブルクリックして値を変更すると、グラフやテーブルが更新されます。(下記で試してみてください。もちろん、オリジナルの Excel ワークブックは変更されません。)

<iframe src="https://onedrive.live.com/embed?cid=9C0AF81B735E29EA&resid=9C0AF81B735E29EA%2111502&authkey=AOEFg6lwFXrEVnk&em=2&AllowInteractivity=True&AllowTyping=True" width="402" height="346" frameborder="0" scrolling="no"></iframe>

さらに、ワークブック全体ではなく、表示するアイテムを限定することもできます。
Excel で [ファイル] メニューをクリックして、[ブラウザーの表示オプション] を選択すると、下図のようにブック全体ではなく、ブック内のアイテムごとの表示設定が可能です。まず、この設定をおこなって、ブックを OneDrive にアップロードしてください。

つぎに、例えば、このブック上のグラフの名前を「graph1」とすると、下記太字の通り Item パラメーターを使って、グラフのアイテムだけを表示できます。(「グラフ 1」のように日本語の名前の場合は、UTF-8 の文字列を URL エンコードしてください。)

<iframe src=https://onedrive.live.com/embed?cid=9C0AF81B735E29EA&resid=9C0AF81B735E29EA%2111502&authkey=AOEFg6lwFXrEVnk&em=2&item=graph1 width="402" height="346" frameborder="0" scrolling="no"></iframe>

さらに、ブックの「時給」欄に、下記の通り「exrate」という名前を付けます。

さらに、ブックの [表示オプション] でグラフのみを表示するようにし、下図のようなパラメーターとして、この exrate を選択します。

この設定でブックを OneDrive にアップロードし、埋め込みタグで Web ページ上に挿入すると、下記の通りパラメーターの入力結果によってグラフの表示を変えることができます。(下記で、実際にパラメーターを入力してみてください。)

 

データの更新

2011/12/19 追記 :
OneDrive の新しい REST API について、こちら に掲載しました。

Windows Live SkyDrive では WebDAV を使ってデータにアクセスできるため、プログラミングによって、Excel のオリジナル データの登録なども可能です。
ただし、認証 (Authentication) に注意してください。Live ID では、OAuth 2 を処理するように実装します。

補足 : ブラウザーを使用した passive 認証だけでなく、login.live.com を使用した authentication token の取得と、SkyDrive の SOAP Web Services (http://docs.live.net/SkyDocsService.svc) を使用した基本情報の取得 (フォルダーの一覧の取得、フォルダー ID の取得、など) を組み合わせて、プログラム コードによる active 認証をおこなって、 SkyDriveに対して さまざまな処理をおこなうこともできます。(この場合も、認証後のデータの処理では、 WebDAV を使用します。)

ここでは詳細を述べませんが、既にインターネット上には、.NET 用の API や、Windows Phone 7 などから接続するサンプル コードなどが存在しますので、是非 参考にしてみてください。(下記は、CodePlex の SkyDrive .Net API Client を使用した C# のサンプル コードです。)

. . .
using HgCo.WindowsLive.SkyDrive;
. . .

SkyDriveServiceClient cl = new SkyDriveServiceClient();
cl.LogOn(textBox1.Text, textBox2.Text);
cl.Timeout = 120000;
var rootFolders = cl.ListRootWebFolders();
foreach (var folderInfo in rootFolders)
{
    if(String.Compare(folderInfo.Name, "OWA_Demo", true) == 0)
    {
        cl.UploadWebFile(@"c:Demotest1.xlsx", folderInfo);
        break;
    }
}
MessageBox.Show("Upload completed !");

[CodePlex] SkyDrive .Net API Client
http://skydriveapiclient.codeplex.com/

[MSDN Samples] SkyDrive Photo API sample for WP7
http://code.msdn.microsoft.com/SkyDrive-Photo-API-sample-f06778ae

このように、Office 365 に比べて劣るものの、SkyDrive でも、上記のようにいくつかの方法で開発と再利用が可能ですので (しかも、SkyDrive は無償です)、是非、さまざまな形で活用してみてください。 

補足 : 現在 (2011/07/14) の SkyDrive では、残念ながら、前回説明した SharePoint (Office 365) のような、REST、JavaScript などの API は提供されていません。

Comments (0)

Skip to main content