Índice
Este script lee contenido de texto (por ej. URLs, IDs de producto) de una columna, genera imágenes de códigos QR y las guarda en una columna de imagen. El script recorre todas las filas de la tabla y por lo tanto es adecuado para la ejecución manual o como automatización — no como script de botón.
Requisitos
La tabla necesita al menos dos columnas:
- Una columna de texto o URL con el contenido a codificar como código QR.
- Una columna de imagen donde se guardará el código QR generado.
El script
Adapte las cuatro variables del inicio a la estructura de su tabla. El script omite las filas que no tienen valor de texto o que ya contienen un código QR. Establezca OVERWRITE = True para regenerar los códigos QR existentes.
from seatable_api import Base, context
import qrcode
from io import BytesIO
base = Base(context.api_token, context.server_url)
base.auth()
TABLE_NAME = "Table1"
TEXT_COLUMN = "URL"
IMAGE_COLUMN = "QR Code"
OVERWRITE = False
rows = base.list_rows(TABLE_NAME)
for row in rows:
text = row.get(TEXT_COLUMN)
existing = row.get(IMAGE_COLUMN)
if not text or (existing and not OVERWRITE):
continue
qr = qrcode.QRCode(version=2, error_correction=qrcode.constants.ERROR_CORRECT_M, box_size=10, border=4)
qr.add_data(text)
qr.make(fit=True)
img = qr.make_image(fill_color="black", back_color="white")
buf = BytesIO()
img.save(buf, format='PNG')
buf.seek(0)
info = base.upload_bytes_file(str(text) + '.png', buf.read(), file_type='image')
base.update_row(TABLE_NAME, row['_id'], {IMAGE_COLUMN: [info.get('url')]})
print("QR codes generated.")
Ejecución
El script se puede iniciar de tres formas:
- Manualmente en el editor Python de la base
- Por automatización (por ej. programada o al crear nuevas filas)
- Por botón — para ello el script debería adaptarse para procesar solo la fila actual
Más información aquí .
Para la referencia completa de funciones, visite el SeaTable Developer Manual .