SOLVED

How to update an Excel sheet in OneDrive from a Python script running locally?

Copper Contributor

Hi,

 

I have a python3 script which generates a particular set of data that gets updated to a locally stored Csv/Excel file. I am using Openpyxl package in python to achieve the same.

But the requirement has changed such that the data should be available in a shared platform were multiple personnals can view, edit and export as and when required. This lead to the idea of creating an excel sheet in the microsoft office 365 Excel and updating the sheet so that all the requirements can be met.

Unfortunately, I couldnt find any documentation or tutorial that lets someone update an Excel sheet in office 365 even though i spent a considerable amount of time searching online.

My requirement is to have an API that can take the row in some format and update it to the Excel sheet under my login.

Please help me find a solution to this question or any other alternative that would help to achieve the matter at hand.

 

5 Replies
best response confirmed by Sophus_Stein (Copper Contributor)
Solution

You can use the Microsoft Graph API to update an Excel sheet stored in OneDrive from a Python script running locally. Here's an example of how you can do this:

  1. First, you will need to register your app in the Azure portal and get the necessary credentials (client ID and client secret) to authenticate your app with the Microsoft Graph API.

  2. Next, install the requests and adal libraries in your Python environment:

  3. Then, use the adal library to obtain an access token for the Microsoft Graph API:
  4. Now you can use the requests library to make API calls to the Microsoft Graph API. For example, to update a cell in an Excel sheet stored in OneDrive, you can use the PATCH method and pass the access token in the Authorization header:

I hope this helps! Let me know if you have any questions.

(external link removed by moderator)

@Sophus_Stein 

@Raysilver01 the answer you gave is unclear.
please explain with an example code snippet if possible.

 

Thanks.

Hi @traza8545,

 

Thank you for your reply.

My requirement is to update/write to an already existing excel worksheet. Will you be able to reply with the specific API for this action?

Apologize for the inconvinience but im not able to find an API for update purposes. 

Hi @traza8545,

I was able to view all the items present in my ondrive using a Graph API https://graph.microsoft.com/v1.0/me/drive/root/children/sites

Also found another API to add rows to an excel sheet: https://graph.microsoft.com/v1.0/drives/{drive-id}/items/{item-id}/workbook/worksheets/Sheet1/tables... 

But it keeps giving me the error mentioned below:

{
"error": {
"code": "ItemNotFound",
"message": "The requested resource doesn't exist.",
"innerError": {
"code": "itemNotFound",
"message": "The requested resource doesn't exist.",
"date": "2022-12-23T10:34:02",
"request-id": "73ddfb08-ab4d-4c5b-b094-e199f408c608",
"client-request-id": "53f7fb58-cf12-7a18-e9c4-88f6ec786849"
}
}
}
 
Will you be able to help me on this?
 
Thanks

 

@Sophus_Stein Please add your vote here https://feedbackportal.microsoft.com/feedback/idea/976c241d-74bd-ed11-83ff-000d3a1ab7d1 This is about Microsoft native support for Python as an alternative language to VBA.
1 best response

Accepted Solutions
best response confirmed by Sophus_Stein (Copper Contributor)
Solution

You can use the Microsoft Graph API to update an Excel sheet stored in OneDrive from a Python script running locally. Here's an example of how you can do this:

  1. First, you will need to register your app in the Azure portal and get the necessary credentials (client ID and client secret) to authenticate your app with the Microsoft Graph API.

  2. Next, install the requests and adal libraries in your Python environment:

  3. Then, use the adal library to obtain an access token for the Microsoft Graph API:
  4. Now you can use the requests library to make API calls to the Microsoft Graph API. For example, to update a cell in an Excel sheet stored in OneDrive, you can use the PATCH method and pass the access token in the Authorization header:

I hope this helps! Let me know if you have any questions.

(external link removed by moderator)

@Sophus_Stein 

View solution in original post