Incapaz de abrir un documento usando DocumentApp.openById() en google app script

Estoy tratando de crear una copia de un documento de plantilla y editar un texto en él usando el siguiente código:

 const destinationFolder = DriveApp.getFolderById(folderId) //folder where to save the document 
 const copy = templateDoc.makeCopy(customDocName.toString(), destinationFolder); //make a copy of the template document
 const doc = DocumentApp.openById(copy.getId()) //open the copy 
 const body = doc.getBody();
 
 //update the template with data
 body.replaceText('', 'replacementText');
 body.replaceText('', 'replacementText'); 

Soy capaz de crear una copia del documento, renombrarlo y guardarlo en la carpeta especificada. Estoy recibiendo el siguiente error en la línea 3 : Excepción: El documento es inaccesible. Por favor, intente de nuevo más tarde.

He buscado las soluciones y he probado todo menos nada funcionó.

Aquí está todo lo que he probado:

  • Iniciar sesión de nuevo
  • Habilitado para todos los recursos pertinentes
  • Movedo el script de aplicación bajo un proyecto GCP como alguien sugirió que ya no podemos acceder a un doc directamente desde el script de aplicación.
  • Activado todos los api relevantes en GCP

Pregunta hecha hace 3 años, 5 meses, 5 días - Por daniel1


3 Respuestas:

  • El problema fue con la plantilla Doc como era Microsoft Word Document(.docx). Cuando creé un Google Doc y lo mencionó como el doc de plantilla que funcionó muy bien. Gracias por toda su ayuda :)

    Respondida el Dec 18, 2020 a las 10:53 - por pixelpioneerb898

    Votos positivos: 0 | Votos negativos: 0

  • El error "El documento es inaccesible. Por favor, intente de nuevo más tarde." que estás experimentando puede deberse a varios motivos. Aquí te dejo algunas posibles soluciones que podrías probar:

    • Tiempo de espera: Asegúrate de que el documento se ha creado y guardado completamente antes de intentar abrirlo. Puedes añadir una pausa corta antes de intentar abrirlo para dar tiempo al sistema a procesar el documento.
    javascript
    Utilities.sleep(5000); // Espera 5 segundos
    
    • Permisos de Google Drive: Verifica que el script tenga los permisos adecuados para acceder a los documentos en Google Drive. Asegúrate de que el script esté siendo ejecutado con la cuenta que tiene acceso al documento y a la carpeta donde se está guardando.
    • Permisos adicionales: Si el documento es compartido con otras cuentas de Google, asegúrate de que el script tenga permisos para acceder a esos documentos compartidos.
    • Probar el ID directamente: Intenta abrir el documento utilizando el ID directamente para asegurarte de que el problema no sea con la copia del documento.
    javascript
    const docId = 'ID_DEL_DOCUMENTO_COPIADO';
    const doc = DocumentApp.openById(docId);
    
    • Depuración detallada: Para obtener más detalles sobre el error, puedes agregar un bloque `try-catch` alrededor de la apertura del documento y luego imprimir más información sobre el error en caso de que se produzca.

    Espero que alguna de estas soluciones te ayude a resolver el problema. Si el problema persiste, no dudes en consultar nuevamente.

    Respondida el Dec 19, 2020 a las 10:53 - por Gpt

    Votos positivos: 0 | Votos negativos: 0

  • Solución:

    El error "El Documento es Inaccesible" generalmente ocurre cuando no tienes los permisos necesarios para acceder al Documento de Google. Para solucionarlo, intenta lo siguiente:

    • Verificar Permisos: Asegúrate de que la cuenta de servicio que está ejecutan el script tenga permisos de lectura y escritura para el Documento de Google que intentas editar.
    • Actualizar API: Compara la lista de API habilitadas en tu proyecto de GCP con las API necesarias para DriveApp en los documentos de Google App Script. Habilita cualquier API que falte.
    • Deshabilitar la Prevención de Pérdida de Datos (DLP): Si DLP está habilitada en tu cuenta de Google, puede bloquear el acesso a algunos tipos de información en los Documentos de Google. Intenta deshabilitar DLP para ver si resuelve el problema.
    • Revisar el ID del Documento: Asegúrate de que el `copy.getId()` que se está utilizando para `DocApp.openById()` sea el ID correcto del Documento de Google que deseas editar.
    • Copiar en Lugar de Mover: En lugar de mover el Documento de la plantilla a la carpeta de destimo, intenta crear una copia del Documento de la plantilla y guardarlo directamente en la carpeta de destimo.
    • Esperar unos Momentos: A veces, puede llevar unos minutos para que los permisos se apliquen después de realizar cambio. Intenta esperar unos minutos e intenta de nuevo.

    Ejemplo de Código:

    Si todo lo anterior no resuelve el problema, puedes probar el siguiente ejemplo de Código para copiar y editar un Documento de Google:

    
    function copyAndEditDocument() {
      const templateId = 'YOUR_TEMPLATE_DOCUMENT_ID';
      const destinationFolderId = 'YOUR_DESTINATION_CARET_ID';
      const copyName = 'Custom Document Name'
    
      const templateDoc = DriveApp.getFileById(templateId);
      const copy = templateDoc.makeCopy(copyName, DriveApp.getFolderById(destinationFolderId));
      const copyId = copy.getId();
    
      const doc = DocumentApp.openById(copyId)
      const body = doc.getBody();
    
      // Update the document with data
      body.replaceText '', 'replacementText');
      body.replaceText '', 'replacementText');
    
      // Save and close the document
      doc.saveAndClose();
    }
    

    Nota:

    Reemplaza YOUR_TEMPLATE_DOCUMENT_ID con el ID del Documento de la plantilla. Reemplaza YOUR_DESTINATION_CARET_ID con el ID de la carpeta de destimo donde deseas guardar el Documento copiado.

    • Reemplaza `copyName` con el nombre que deseas darle al Documento copiado.

    Espero que esto resuelva tu problema.

    Respondida el Dec 19, 2020 a las 11:03 - por Gemini

    Votos positivos: 0 | Votos negativos: 0