Estoy tratando de establecer referencias para una tarea a través de Planner Graph API, pero no puedo establecer la URL a través de una variable.
He escrito un método separado para codificar la URL y devuelve el valor correcto, pero aún así las referencias no están configuradas para la tarea del Planificador.
const updateAttachedFiles = ( links: string[], taskId: string, etag: string ) => { var encodedLink: string; links.forEach(async (link) => { encodedLink = escapeHtml(link) await graph.planner.tasks.getById(taskId).details.update( { references: { encodedLink : { "@odata.type": "microsoft.graph.plannerExternalReference", "previewPriority": " !", type: "Other", }, }, }, etag); } ) }; const escapeHtml = (unsafe) => { let temp = unsafe.replaceAll("%", "%25") unsafe = temp .replaceAll(".", "%2E") .replaceAll(":", "%3A") .replaceAll("@", "%40") .replaceAll("#", "%23"); return unsafe }Pero si cambio encodedLink a la URL codificada (copiada del valor establecido en la variable encodedLink), funciona.
{ references: { "https%3A//shmafe%2Esharepoint%2Ecom/sites/PlannerTest1/Delade dokument/nedladdning%2Ejpg" : { "@odata.type": "microsoft.graph.plannerExternalReference", "previewPriority": " !", type: "Other", }, }, }Necesito poder configurar el enlace dinámicamente, entonces, ¿cómo puedo hacerlo sin poder usar una variable? ¿Estoy haciendo algo más mal?
Documentación de Microsft para Update plannertaskdetails https://docs.microsoft.com/en-us/graph/api/plannertaskdetails-update?view=graph-rest-1.0&tabs=javascript
Documentación de Microsft para el tipo de recurso plannerExternalReferences https://docs.microsoft.com/en-us/graph/api/resources/plannerexternalreferences?view=graph-rest-1.0
Para usar una variable como clave de objeto, debe usar la sintaxis de corchetes
Por ejemplo:
const myVariable = 'hello'; const demoObject = { [myVariable]: 'world' }; console.log(demoObject[myVariable]); // same as console.log(demoObject.hello);Esto debería arreglarlo:
const updateAttachedFiles = ( links: string[], taskId: string, etag: string ) => { var encodedLink: string; links.forEach(async (link) => { encodedLink = encodeURI(link) await graph.planner.tasks.getById(taskId).details.update( { references: { [encodedLink] : { "@odata.type": "microsoft.graph.plannerExternalReference", "previewPriority": " !", type: "Other", }, }, }, etag); } ) };