2017-08-16 9 views
2

このプロジェクトをダウンロードしてカスタマイズしましたasp mvc todo sample。これは、onedriveファイル/項目を上手くいく上で問題なく、うまく動作しています。しかし、私はこれをオンラインでオフィス365のシェアポイントを使って行う必要があります。 iは次のようにサービスポイントを使用してファイルIDを取得することができています:Microsoft Graph APIを使用してSharepointドキュメントライブラリを使用してExcelファイルを操作する

var serviceEndpoint = "https://graph.microsoft.com/beta/sites/mydomain.sharepoint.com:/foa/bd:/lists/Budget/items"; 

しかし、私はどのように私は、ファイルデータをエクセルと同じ操作/更新するために、SharePointと、ブックエンドポイントのURLを定義する必要がありますことを確認していません。 (動作しない)、次のように現在のブックエンドポイントURL:次のように

var workbookEndpoint = "https://graph.microsoft.com/beta/sites/mydomain.sharepoint.com:/foa/bd:/lists/Budget/items/" + fileId + "/workbook"; 

私の完全な方法は、SharePoint上のExcelファイル内のセルの値を更新します

public static async Task UpdateExcelCellValue_Sharepoint(string accessToken, string cellAddress, string val) 
    { 
     string worksheetName = "Parameters"; 
     var serviceEndpoint = "https://graph.microsoft.com/beta/sites/mydomain.sharepoint.com:/foa/bd:/lists/Budget/items"; 
     HttpClient client = new HttpClient(); 
     client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", accessToken); 
     var filesResponse = await client.GetAsync(serviceEndpoint + "?$select=name,id"); 
     if (filesResponse.IsSuccessStatusCode) 
     { 
      var filesContent = await filesResponse.Content.ReadAsStringAsync(); 
      JObject parsedResult = JObject.Parse(filesContent); 
      foreach (JObject file in parsedResult["value"]) 
      { 
       var name = (string)file["id"]; 
       if (name.Contains("173")) 
       { 
        fileId = (string)file["id"]; 
        break; 
       } 
      } 
     } 
     else 
     { 
      //Handle failed response 
     } 
     //Set up workbook and worksheet endpoints 
     var workbookEndpoint = "https://graph.microsoft.com/beta/sites/mydomain.sharepoint.com:/foa/bd:/lists/Budget/items/" + fileId + "/workbook"; 
     var worksheetsEndpoint = workbookEndpoint + "/worksheets"; 
     var patchMethod = new HttpMethod("PATCH"); 
     var summaryTableRowJson = "{" + 
       "'values': '" + val + ".csv'" + 
      "}"; 
     var colNamePatchBody = new StringContent(summaryTableRowJson); 
     colNamePatchBody.Headers.Clear(); 
     colNamePatchBody.Headers.Add("Content-Type", "application/json"); 
     var colNameRequestMessage = new HttpRequestMessage(patchMethod, worksheetsEndpoint + 
      "('" + worksheetName + "')/range(address='Parameters!B2')") 
     { Content = colNamePatchBody }; 
     var colNameResponseMessage = await client.SendAsync(colNameRequestMessage); 
    } 

答えて

0

これが機能するようになりました。たとえば、動作するパスは次のとおりです。

https://graph.microsoft.com/beta/sites/{tenant-name}.sharepoint.com/lists/{id}/drive/root:/Book.xlsx:/workbook。これは可能性の1つです。

パスをIDに置き換えてみてください(実際にはどちらも動作するはずです)。

関連する問題