0 votos

¿Cómo combinar elementos de texto en un acceso directo de Siri sin omitir un carácter de unión cuando un valor está vacío?

enter image description here

Estoy creando un archivo delimitado por tabulaciones a partir de los recordatorios. No todos los elementos de cada recordatorio tienen un valor, por lo que esperaba que algunas filas tuvieran 2 caracteres de tabulación adyacentes, pero en cambio, estoy viendo que diferentes filas terminan con diferentes números de valores porque los casos en los que debería terminar con 2 caracteres de tabulación adyacentes se reducen a 1 carácter de tabulación.

Supongo que podría envolver cada elemento en un condicional e insertar "null" o algo así. ¿Hay una mejor manera de hacerlo para mantener el acceso directo lo más simple posible?

Por cierto, estoy haciendo esto como un acceso directo de Siri en lugar de AppleScript (que también escribí) porque el diccionario AppleScript de Recordatorios no maneja subtareas o sublistas, tarda minutos en ejecutarse y requiere que la aplicación de Recordatorios esté abierta en el escritorio actual (si quiero que termine en un tiempo razonable) mientras que el acceso directo de Siri se ejecuta en segundo plano en unos pocos segundos y puede procesar subtareas/listas.

0voto

hepcat72 Puntos 103

Aparentemente no hay manera de saber combine para no omitir los caracteres de tabulación cuando un valor de los elementos de texto que se combinan es una cadena vacía, por lo que tienen para establecer condicionales que comprueben la existencia de valores vacíos y proporcionen un valor de cadena por defecto (por ejemplo null ) para mantener el número de caracteres de tabulación en la salida. Luego podría eliminar esos valores con una regex en la salida de texto combinada, si realmente quiere caracteres de tabulación concurrentes.

Sugerencia alternativa

Dicho esto, al final decidí dar salida en formato json (en lugar de delimitado por tabulaciones) y utilicé un Dictionary paso para establecer todos los valores de la "columna". Añadí ese diccionario a una lista. Después del bucle de recordatorio, creé un nuevo diccionario externo y establecí una clave donde la lista de diccionarios de recordatorio era el valor.

Tenga en cuenta que si tiene una lista (por ejemplo, de títulos de recordatorios), y esa lista resulta tener 0 o 1 elementos, termina con un problema similar. En lugar de faltar tabulaciones, tu lista en JSON se guarda como una simple cadena, y tienes que usar una expresión regular en el JSON encadenado para arreglar el valor de la cadena y convertirlo en una lista JSON adecuada (para que el json sea consistente).

Por ejemplo, el JSON debe sea esto:

{"listA": [], "listB": ["single value"], "listC": ["value1", "value2"]}

Pero a menos que lo arregle, encadenar un diccionario con valores de lista (por ejemplo, listaA (0 elementos), listaB (1 elemento) y listaC (2 elementos)) producirá:

{"listA": "", "listB": "single value", "listC": ["value1", "value2"]}

Así que tienes que hacer 2 pasos de reemplazo regex para:

  • Sustituir "listA":"" con "listA":[]
  • Sustituir "listB":"([^"]+)" con "listB":["$1"]

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X