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.
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.
Tendrá que cambiar eso para:
folder.addFile(moveFile);
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.