Ajustes para unificar dependencia de current_url.
This commit is contained in:
@@ -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 == "":
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -1239,8 +1239,6 @@ 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", "")
|
|
||||||
if url == "":
|
|
||||||
url = _gvs("current_url", "")
|
url = _gvs("current_url", "")
|
||||||
_sv("gdoc_url_used", url)
|
_sv("gdoc_url_used", url)
|
||||||
|
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
Reference in New Issue
Block a user