Office Graph API: Şablona Dayalı Yeni Belge
Geçenlerde Office Graph API kullanarak bir şablona dayalı Word belgesi oluşturmak ve ilişkili SharePoint ListItem’ın birkaç meta verisini ayarlamak istedim. “Straight-forward” bir iş olmadığı ortaya çıktı, bu da sonuçta bu makaleye yol açtı.
Sorun Özeti
İçinde belgelerin AkDocumentDoc ContentType’ına dayalı olarak oluşturulacağı bir kitaplığım var. ContentType Document türünde ve birkaç ek sütunu var.
AkDocumentDoc’un arkasında bir Word şablonu var, böylece AkDocumentDoc’a dayalı bir öğe oluşturulduğunda aynı anda bu şablonla bir Word belgesi oluşturuluyor. Şablon Pruef.dotx olarak adlandırılmış.
Şimdi bu ContentType’a dayalı olarak kitaplığa yeni öğeler oluşturan ve ilişkili SharePoint ListItem’ın meta verilerini ayarlayan bir mantık gerekli.
Tüm istekler Graph Explorer veya Postman üzerinden gönderilebilir.
Ortam
Gerekli değişkenler:
| Ad | Örnek Değer | Açıklama |
|---|---|---|
| hostname | kirmizient.sharepoint.com | SharePoint Tenant |
| siteUrl | https://…/sites/halklailiskiler | SiteCollection |
| graph siteId | hostname,siteCollectionId,siteId | Birleşik |
| graph drive id | b!EWACgmr6… | Kitaplığın Drive ID’si |
Site ID’yi Bulma
https://graph.microsoft.com/v1.0/sites?search=halklailiskiler
Döndürülen ID formatı: <hostname>,<siteCollectionId>,<siteId>.
Drive ID’yi Bulma
https://graph.microsoft.com/v1.0/sites/<graph siteId>/drives
Belge Oluşturma (OneDrive API)
Belge OneDrive API’sine bir PUT isteği ile oluşturulur:
https://graph.microsoft.com/v1.0/sites/<graph siteId>/drives/<graph drive id>/root:/<filename.docx>:/content
Belgeyi Güncelleme (SharePoint API)
Artık belgemizin meta verilerini güncelleyebiliriz – bunun için PATCH yöntemi kullanılır:
{
"fields": {
"Title": "Test-Blog-AK",
"FileLeafRef": "akblogtest123-update.docx",
"ContentType": "AkDocumentDoc",
"Test1": true,
"Test2": false
}
}
Özet
Belge OneDrive API üzerinden oluşturulur, meta verilerin doldurulması SharePoint API üzerinden yapılır. “Straight-forward” bir yol yok – bunu göstermek istediğim buydu.