## Ubuntu: Install Python Script Provider ``` sudo apt install libreoffice-script-provider-python ``` ## Create Scripts Put these in `~/.config/libreoffice/4/user/Scripts/python`. Note that `Scripts` is capitalised, but everything else is in lowercase. (Gotta love the consistency here.) ### Example 1 This is the basic example Chatgpt gives. Put this in e.g. `~/.config/libreoffice/4/user/Scripts/python/hello.py` ```py import uno def hello_calc(): # Get the LibreOffice desktop context ctx = XSCRIPTCONTEXT.getComponentContext() # Get the current Calc document doc = XSCRIPTCONTEXT.getDocument() # Get the active sheet sheet = doc.CurrentController.ActiveSheet # Set value in A1 cell = sheet.getCellRangeByName("A1") cell.String = "Hello from Python!" ``` ### Example 2 Again courtesy of Chatgpt. ```py import uno def sum_two_cells(): doc = XSCRIPTCONTEXT.getDocument() sheet = doc.CurrentController.ActiveSheet cell1 = sheet.getCellRangeByName("A1") cell2 = sheet.getCellRangeByName("A2") try: value1 = float(cell1.String) value2 = float(cell2.String) result = value1 + value2 except ValueError: result = "Error: Non-numeric input" sheet.getCellRangeByName("A3").String = str(result) ``` ## Writer Example ```py import uno def hello_writer(): # Get the current Writer document doc = XSCRIPTCONTEXT.getDocument() text = doc.Text cursor = text.createTextCursor() # Insert plain text text.insertString(cursor, "Hello from Python in Writer!\n", False) # Insert bold text cursor.CharWeight = 150 # Bold text.insertString(cursor, "This is bold text.\n", False) # Insert italic text cursor.CharPosture = 2 # Italic text.insertString(cursor, "This is italic text.\n", False) ```