El almacenamiento de Creator no es el lugar más económico para guardar una década de cartas de autorización firmadas. En su lugar, súbelas a Dropbox, nombrándolas según el registro para que sean fáciles de encontrar, y conserva solo la ruta en Creator.
Tres elementos distintos del código original han desaparecido. Primero, llamaba a la API v1 de Dropbox ( api.dropbox.com/1/save_url/ ), que Dropbox retiró hace años, no solo la autenticación, sino toda la versión de la API. Segundo, utilizaba un token de acceso de larga duración ; Dropbox dejó de emitirlos el 30 de septiembre de 2021 y ahora requiere tokens de corta duración que se actualizan a partir de un token de actualización almacenado, con una aplicación con ámbito. Tercero, y este es el que nadie espera, acortaba la URL del archivo mediante el Acortador de URL de Google , que cerró en 2019 y cuyos enlaces dejaron de funcionar por completo en agosto de 2025. Tres dependencias obsoletas en una función de veinte líneas.
En el original hay una credencial activa. El script de 2018 contiene un token de portador de Dropbox sin enmascarar, codificado directamente en el mapa de encabezado. Si tiene una copia del original, revoque ese token en la consola de la aplicación Dropbox. Todo lo que aparece a continuación utiliza marcadores de posición con nombre.
files.content.write .token_access_type=offline y luego guarda el refresh_token en un formato DBX_Token .creator_oauth_connection para obtener el archivo. // ============================================
// ZOHO CREATOR -> DROPBOX
// Token de corta duración generado a partir de un token de actualización almacenado.
// ============================================
cadena Dropbox.getAccessToken()
{
APP_KEY = "TU_CLAVE_DE_LA_APP_DE_DROPBOX";
APP_SECRET = "TU_SECRETO_DE_LA_APP_DE_DROPBOX";
almacenado = DBX_Token[ID != null] ordenar por Added_Time descendente rango de 0 a 1;
cuerpo = Mapa();
body.put("grant_type","refresh_token");
cuerpo.put("refresh_token",stored.Refresh_Token);
cuerpo.put("client_id",APP_KEY);
cuerpo.put("client_secret",APP_SECRET);
resp = invokeurl
[
URL: "https://api.dropboxapi.com/oauth2/token"
tipo: POST
parámetros: cuerpo
encabezados: {"Content-Type":"application/x-www-form-urlencoded"}
];
token = resp.getJSON("access_token");
si(token == null)
{
info "Error de autenticación de Dropbox: " + resp.toString();
devolver "";
}
devolver token;
}
void Dropbox.uploadFile(int recordId)
{
rec = Soluciones[ID == recordId];
if(isBlank(rec.Carta_Autorizacion))
{
información "No hay archivo registrado " + recordId;
devolver;
}
token = thisapp.Dropbox.getAccessToken();
si(token == "")
{
devolver;
}
// 1. Extraiga el archivo de Creator a través de una conexión OAuth.
archivoObjeto = invocarurl
[
URL: "https://creatorapp.zohopublic.com/TU_CUENTA/TU_APP/report/Soluciones_Report/"
+ recordId + "/Carta_Autorizacion/descargar"
tipo: GET
conexión: "creator_oauth_connection"
];
// 2. Dropbox-API-Arg debe ser JSON solo en formato ASCII.
extensión = rec.Carta_Autorizacion.getSuffix(".");
ruta = "/" + rec.MID + "/Carta-Autorizacion-" + rec.No_Poliza + "." + extensión;
apiArg = "{\"path\":\"" + path + "\",\"mode\":\"add\",\"autorename\":true,\"mute\":false}";
headerMap = Mapa();
headerMap.put("Authorization","Bearer " + token);
headerMap.put("Content-Type","application/octet-stream");
headerMap.put("Dropbox-API-Arg",apiArg);
resp = invokeurl
[
URL: "https://content.dropboxapi.com/2/files/upload"
tipo: POST
archivos: archivoObj
encabezados: mapa de encabezados
];
uploadedPath = resp.getJSON("path_display");
si(uploadedPath != null)
{
rec.Ruta_Dropbox = Ruta_cargada;
información "Subido a " + uploadedPath;
}
demás
{
info "Error al cargar en Dropbox: " + resp.toString();
}
} save_url , que le pedía a Dropbox que descargara el archivo. Subir los bytes directamente es más sencillo, más rápido y elimina tanto el acortador como el enlace público.Dropbox-API-Arg debe ser ASCII. Un nombre de archivo con acentos —por ejemplo, Autorización— rompe el encabezado. Transcríbalo o escápelo como ó . Esto causa problemas en las aplicaciones en español./2/files/upload_session/start , /append_v2 , /finish . La carga simple los rechazará.autorename evita colisiones. Con mode: add y autorename: true , una carga repetida se convierte en el archivo (1).pdf en lugar de un error. Usa mode: overwrite solo cuando estés seguro de que quieres eliminar la versión anterior. Este script forma parte de la biblioteca gratuita Creator Scripts Deluge.
Los 39 scripts de Deluge, el curso completo de Zoho Creator y todos los recursos descargables ahora son gratuitos. Obtén acceso gratuito →