una refrescar recargar página pagina otra marco forzar div desde contenido con cargar boton actualizar javascript google-apps-script google-docs-api

refrescar - recargar una pagina desde otra con javascript



Cómo actualizar DocsList a DriveApp en mi código (2)

Muchos de los métodos de DriveApp son idénticos a DocsList . Entonces, en muchos casos, simplemente puede reemplazar DocsList con DriveApp .

Surgen problemas con el antiguo método getFolder() .

var folder = DocsList.getFolder(''Name of your folder'');

En este caso, simplemente reemplazar DocsList con DriveApp le dará un problema. No hay un método getFolder() para DriveApp . En Google Drive, puede tener múltiples archivos y carpetas con nombres idénticos (pero diferentes ID). El antiguo DocsList , getFolder() no tuvo en cuenta esta situación. Con DriveApp , aún puede buscar una carpeta por su nombre, pero la devolución es un Folder Iterator . Con DriveApp el nombre del método para obtener una carpeta por nombre es muy diferente; son "carpetas", con una "s" al final. getFoldersByName(name) Plural, no singular. Entonces, aunque el 98% del tiempo, obtener carpetas por nombre dará como resultado solo una carpeta, aún necesita procesar el Folder Iterator . No necesita recorrer el iterador de carpeta. Puedes obtener la primera carpeta. Simplemente use el método next() sin usar un bucle de programación.

Iterador de carpeta

Por lo tanto, le sugiero que simplemente reemplace DocsList con DriveApp excepto en el caso de obtener una carpeta por su nombre. Lea la documentación y corrija esa línea de código, luego ejecútela. Si obtiene un error, VEA la TRANSCRIPCIÓN DE EJECUCIÓN , y probablemente le dirá qué línea de código falló. Si aún necesita ayuda, siempre publique qué línea de código falló.

Además, no hay addToFolder() método addToFolder() de la nueva clase de carpeta DriveApp.

Clase de carpeta

Tendrá que cambiar eso para:

folder.addFile(moveFile);

Método addFile ()

Mi script que genera un documento pdf a partir de una plantilla dentro de Google Drive y lo envía por correo electrónico a un destinatario basado en columnas en una hoja de cálculo dejó de funcionar hoy debido a la depreciación de DocsList. Ver aquí: https://developers.google.com/google-apps/documents-list/

Intenté actualizar siguiendo esta guía https://developers.google.com/drive/web/migration para actualizar todas las instancias de DocsList con DriveApp, pero no puedo hacer que funcione. ¿Podría alguien ayudarme a actualizar este script para que funcione correctamente? Tengo 6 instancias de "DocsList" en este script, y pude actualizar algunas correctamente, pero otras como "addFile" parecen requerir un formato diferente. Incluso después de intentar simplemente buscar y reemplazar "DocsList" con "DriveApp", aparece el siguiente mensaje de error:

"TypeError: no se puede encontrar la función addFile en el objeto ProofOfCredit_CNZDTVR44N.pdf. (Línea 45, archivo" ProofOfCreditCode ")"

Agradecería cualquier consejo y ayuda, ya que esta depreciación rompió 5 de mis scripts que son prácticamente idénticos a este.

var docTemplate = "1JAPmsrPRrRwXCVAli229C5J7Kr4xaOnfO2rmGqvYyhU"; var docName = "ProofOfCredit"; function onFormSubmit(e) { var first_name = e.values[1]; var last_name = e.values[2]; var customer_email = e.values[3]; var order_number = e.values[4]; var brand = e.values[5]; var amount = e.values[6]; var date_of_credit = e.values[7]; var auth_code = e.values[8]; var last_4 = e.values[9]; var request_id = e.values[10]; var rep_name = e.values[11]; var copyId = DocsList.getFileById(docTemplate) .makeCopy(docName+''_''+order_number) .getId(); var copyDoc = DocumentApp.openById(copyId); var copyBody = copyDoc.getActiveSection(); copyBody.replaceText(''keyFirst'', first_name); copyBody.replaceText(''keyLast'', last_name); copyBody.replaceText(''keyBrand'', brand); copyBody.replaceText(''keyAmount'', amount); copyBody.replaceText(''keyCreditdate'', date_of_credit); copyBody.replaceText(''keyAuth'', auth_code); copyBody.replaceText(''keyRep'', rep_name); copyBody.replaceText(''keyOrder'', order_number); copyBody.replaceText(''keyCClast4'', last_4); copyBody.replaceText(''keyRequestID'', request_id); var todaysDate = Utilities.formatDate(new Date(), "GMT", "MM/dd/yyyy"); copyBody.replaceText(''keyTodaysDate'', todaysDate); copyDoc.saveAndClose(); var pdf = DocsList.getFileById(copyId).getAs("application/pdf"); var folder = DocsList.getFolder(''Proof of Credit''); var movefile = DocsList.createFile(pdf); movefile.addToFolder(folder); movefile.removeFromFolder(DocsList.getRootFolder()); var subject = "Proof of Credit regarding Order Number: " + order_number; var body = "Hello " + first_name + " " + last_name + "," + "<br /><br />" + "Thank you for calling " + brand + " Support. The attached document contains information " + "for you to reference related to the credits we have issued back to your original form of payment." + "<br /><br />" + "If you have any further questions or require additional assistance please let us know." + "<br /><br />" + "Regards," + "<br /><br />" + rep_name + ", Payments Department" + "<br />" + "[email protected]"; var cc = "[email protected]"; MailApp.sendEmail(customer_email, subject, body, {htmlBody: body, attachments: pdf, cc: cc}); DocsList.getFileById(copyId).setTrashed(true); }


No hay ningún método para "agregar a la carpeta" para un objeto de archivo en DriveApp. En su lugar, debe obtener la carpeta (que parece que está almacenada en la carpeta var) y luego usar el objeto Carpeta para agregar un archivo. Se vería algo así:

var folder = DriveApp.getFolderById(string id); var movefile = DocsList.createFile(pdf); folder.addFile(moveFile);

Puede usar objetos de carpeta para agregar un archivo a la carpeta, pero DriveApp no ​​tiene ningún método para que los objetos de archivo se agreguen a una carpeta.