--- title: Índice --- # Ejemplos reales de uso --- ## Calc --- ### Solicitar precios Consultar datos en json a una página web y vaciarlos en una hoja. === "EasyMacro" ```py import easymacro as app def obtener_precios(): URL = 'https://api.binance.com/api/v3/ticker/price' respuesta = app.url.get(URL) if respuesta.status_code == 200: datos = respuesta.json() app.active.active['A1'].dict = datos return ``` === "Sin EasyMacro" ```py import uno import json from urllib import request def obtener_precios(): URL = 'https://api.binance.com/api/v3/ticker/price' data = json.loads(request.urlopen(URL).read().decode()) doc = XSCRIPTCONTEXT.getDocument() sheet = doc.CurrentController.ActiveSheet sheet[0,0].String = 'symbol' sheet[0,1].String = 'price' for i, row in enumerate(data): sheet[i + 1,0].String = row['symbol'] sheet[i + 1,1].Value = float(row['price']) return ```
### Clonar imagenes Clonar todas las imagenes de una hoja a otra. === "EasyMacro" ```py doc = app.active for image in doc[0].dp: if image.is_image: image.clone(doc[1].dp) ``` === "Sin EasyMacro" ```py import uno import io import unohelper from com.sun.star.io import IOException, XOutputStream from com.sun.star.beans import PropertyValue CTX = uno.getComponentContext() SM = CTX.getServiceManager() class LOShape(): def __init__(self, shape): self._shape = shape class OutputStream(unohelper.Base, XOutputStream): def __init__(self): self._buffer = b'' self.closed = 0 @property def buffer(self): return self._buffer def closeOutput(self): self.closed = 1 def writeBytes(self, seq): if seq.value: self._buffer = seq.value def flush(self): pass def clone_image(self, doc, to_sheet): stream = self._shape.GraphicStream buffer = self.OutputStream() size, data = stream.readBytes(buffer, stream.available()) stream = SM.createInstanceWithContext('com.sun.star.io.SequenceInputStream', CTX) stream.initialize((data,)) image = doc.createInstance('com.sun.star.drawing.GraphicObjectShape') gp = SM.createInstance('com.sun.star.graphic.GraphicProvider') properties = (PropertyValue(Name='InputStream', Value=stream),) image.Graphic = gp.queryGraphic(properties) to_sheet.DrawPage.add(image) image.Size = self._shape.Size image.Position = self._shape.Position return def clone_shape(self, doc, to_sheet): for p in self._shape.CustomShapeGeometry: if p.Name == 'Type': type_shape = p.Value.title() service = f'com.sun.star.drawing.{type_shape}Shape' shape = doc.createInstance(service) shape.Size = self._shape.Size shape.Position = self._shape.Position to_sheet.DrawPage.add(shape) return def main(): IMAGE = 'com.sun.star.drawing.GraphicObjectShape' SHAPE = 'com.sun.star.drawing.CustomShape' doc = XSCRIPTCONTEXT.getDocument() source = doc.CurrentController.ActiveSheet target = doc.Sheets[1] for shape in source.DrawPage: s = LOShape(shape) if shape.ShapeType == IMAGE: s.clone_image(doc, target) elif shape.ShapeType == SHAPE: s.clone_shape(doc, tar ```