Ajustes para unificar dependencia de current_url.

This commit is contained in:
mabejoyb
2026-05-13 18:22:54 -03:00
parent 252085029a
commit dd1a529cdf
5 changed files with 82 additions and 15 deletions

View File

@@ -564,11 +564,9 @@ try:
docs_service, drive_service, auth_mode = get_services(cred_path, impersonated_user) docs_service, drive_service, auth_mode = get_services(cred_path, impersonated_user)
_sv("gdoc_auth_mode", auth_mode) _sv("gdoc_auth_mode", auth_mode)
# doc_id desde URL del navegador # doc_id desde current_url, que lo setea duplicar_plantilla_contrato.py
url_doc = "{current_url}" url_doc = _gvs("current_url", "")
#if url_doc == "": _sv("gdoc_url_used", url_doc)
# url_doc = _gvs("current_url", "")
#_sv("gdoc_url_used", url_doc)
doc_id = extract_doc_id_from_url(url_doc) doc_id = extract_doc_id_from_url(url_doc)
if doc_id == "": if doc_id == "":

View File

@@ -148,6 +148,8 @@ try:
# Retornar valores (Rocketbot compatible) # Retornar valores (Rocketbot compatible)
try: try:
SetVar('current_url', doc_url) SetVar('current_url', doc_url)
SetVar('gdoc_id', copied_doc['id'])
SetVar('gdoc_url_final', doc_url)
SetVar('doc_copy_created', True) SetVar('doc_copy_created', True)
except NameError: except NameError:
pass # Si no está en Rocketbot, solo imprime pass # Si no está en Rocketbot, solo imprime

View File

@@ -4,6 +4,7 @@ from googleapiclient.discovery import build
import os import os
import sys import sys
import json import json
import re
import base64 import base64
from email.mime.base import MIMEBase from email.mime.base import MIMEBase
from email.mime.multipart import MIMEMultipart from email.mime.multipart import MIMEMultipart
@@ -26,6 +27,30 @@ CREDENTIALS_PATH = '{gdoc_sa_json2}'
IMPERSONATED_USER = '{gdoc_impersonated_user}' IMPERSONATED_USER = '{gdoc_impersonated_user}'
def rb_get_var(name, required=True, default=''):
try:
value = GetVar(name)
except NameError:
value = os.environ.get(name, default)
if value is None:
value = ''
value = str(value).strip()
if value == f'{{{name}}}':
value = ''
if required and not value:
raise RuntimeError(f'La variable Rocketbot "{name}" está vacía o no fue leída correctamente.')
return value
def extract_doc_id_from_url(url):
match = re.search(r"/document/d/([a-zA-Z0-9_-]+)", url or "")
return match.group(1) if match else ""
def _load_json(path): def _load_json(path):
with open(path, 'r', encoding='utf-8') as f: with open(path, 'r', encoding='utf-8') as f:
return json.load(f) return json.load(f)
@@ -99,7 +124,17 @@ drive_service, gmail_service = get_drive_and_gmail_services(
CREDENTIALS_PATH, IMPERSONATED_USER) CREDENTIALS_PATH, IMPERSONATED_USER)
# Id del documento de Google Drive a enviar por email # Id del documento de Google Drive a enviar por email
DOC_ID = '{gdoc_id}' CURRENT_URL = rb_get_var('current_url')
DOC_ID = extract_doc_id_from_url(CURRENT_URL)
if not DOC_ID:
raise RuntimeError('No pude extraer documentId desde current_url: ' + CURRENT_URL)
try:
SetVar('gdoc_id', DOC_ID)
SetVar('gdoc_url_used', CURRENT_URL)
except NameError:
pass
print(DOC_ID) print(DOC_ID)
# Obtener nombre del documento de Google # Obtener nombre del documento de Google

View File

@@ -1239,9 +1239,7 @@ try:
docs_service, drive_service, auth_mode = get_services(cred_path, impersonated_user) docs_service, drive_service, auth_mode = get_services(cred_path, impersonated_user)
_sv("gdoc_auth_mode", auth_mode) _sv("gdoc_auth_mode", auth_mode)
url = _gvs("gdoc_url", "") url = _gvs("current_url", "")
if url == "":
url = _gvs("current_url", "")
_sv("gdoc_url_used", url) _sv("gdoc_url_used", url)
doc_id = extract_doc_id_from_url(url) doc_id = extract_doc_id_from_url(url)

View File

@@ -3,6 +3,7 @@ from googleapiclient.discovery import build
import os import os
import sys import sys
import json import json
import re
global Request, InstalledAppFlow, Credentials, service_account, build, os, sys, json, LISTA_BUSCAR_REEMPLAZAR, base_dir, libs_dir, SCOPES, CREDENTIALS_PATH, TOKEN_PATH, _load_json, get_google_services, replace_vars_doc, drive_service, docs_service, gdoc_id, lista_oficial_reemplazar, success global Request, InstalledAppFlow, Credentials, service_account, build, os, sys, json, LISTA_BUSCAR_REEMPLAZAR, base_dir, libs_dir, SCOPES, CREDENTIALS_PATH, TOKEN_PATH, _load_json, get_google_services, replace_vars_doc, drive_service, docs_service, gdoc_id, lista_oficial_reemplazar, success
@@ -26,6 +27,30 @@ CREDENTIALS_PATH = '{gdoc_sa_json2}'
IMPERSONATED_USER = '{gdoc_impersonated_user}' IMPERSONATED_USER = '{gdoc_impersonated_user}'
def rb_get_var(name, required=True, default=''):
try:
value = GetVar(name)
except NameError:
value = os.environ.get(name, default)
if value is None:
value = ''
value = str(value).strip()
if value == f'{{{name}}}':
value = ''
if required and not value:
raise RuntimeError(f'La variable Rocketbot "{name}" está vacía o no fue leída correctamente.')
return value
def extract_doc_id_from_url(url):
match = re.search(r"/document/d/([a-zA-Z0-9_-]+)", url or "")
return match.group(1) if match else ""
def _load_json(path): def _load_json(path):
with open(path, 'r', encoding='utf-8') as f: with open(path, 'r', encoding='utf-8') as f:
return json.load(f) return json.load(f)
@@ -92,11 +117,20 @@ def replace_vars_doc(docs_service, gdoc_id, replacements_values):
drive_service, docs_service = get_google_services(CREDENTIALS_PATH, IMPERSONATED_USER) drive_service, docs_service = get_google_services(CREDENTIALS_PATH, IMPERSONATED_USER)
# Variables de entrada (esto usualmente viene de Rocketbot via GetVar) # Variables de entrada (esto usualmente viene de Rocketbot via GetVar)
gdoc_id = '{gdoc_id}' current_url = rb_get_var('current_url')
gdoc_id = extract_doc_id_from_url(current_url)
if not gdoc_id:
raise RuntimeError('No pude extraer documentId desde current_url: ' + current_url)
lista_oficial_reemplazar = {lista_oficial_reemplazar} lista_oficial_reemplazar = {lista_oficial_reemplazar}
try: try:
try:
SetVar('gdoc_id', gdoc_id)
SetVar('gdoc_url_used', current_url)
except NameError:
pass
# Ejecutar reemplazo si se cuenta con la información # Ejecutar reemplazo si se cuenta con la información
if gdoc_id and lista_oficial_reemplazar: if gdoc_id and lista_oficial_reemplazar:
success = replace_vars_doc(docs_service, gdoc_id, lista_oficial_reemplazar) success = replace_vars_doc(docs_service, gdoc_id, lista_oficial_reemplazar)