¿Cómo normalizar el nombre de la página de Google Sites usando Google Apps Script?

Las guías de protocolo de Google Apps Platform para Java y Python describen que el título de una página se normaliza a una ruta mediante las siguientes reglas (incompletas)*:

La normalización consiste en recortar + colapsar los espacios en blanco a '-' y eliminar los caracteres que no coincidan con az, AZ, 0-9, -, _.

No puedo encontrar tal documentación para Google Apps Script y no puedo encontrar una función de ayuda que logre esto, preferiblemente de la misma manera que lo hace la interfaz de usuario de Google Sites.

Mi primer intento, que sé que no está completo (no se ocupa de cómo la interfaz de usuario de Google Sites maneja el principio y el final de la cadena) se ve así:

str.trim().replace(/\s+/g, '-').replace(/[^a-z0-9_-]/ig, '-').toLowerCase();

El contexto en el que estoy usando esto es que tengo una lista de títulos de página y estoy tratando de determinar si la página ya existe en un sitio. Desafortunadamente, no puedo usar la representación de texto para verificar.

Por ejemplo, al usar la interfaz de usuario "Crear una nueva página" de Google Sites, una página llamada "004.Policy Deployment (Hoshin Kanri)" tendrá una ruta "004-policy-deployment-hoshin-kanri".

En uso, estoy tratando de verificar si existe una página, si existe, luego hacer algo, si no, entonces hacer otra cosa, como esto:

if (mySite.getChildByName(myNewPagePath) != null) {
  // do something for pages that exist
} else {
  // do something for pages that don't exist
}

* https://developers.google.com/google-apps/sites/docs/1.0/developers_guide_protocol

Preguntas:

  1. ¿Existe una función auxiliar existente que normalice el título de una página?
  2. ¿Hay una mejor manera de verificar si una página ya existe?
  3. ¿Hay alguna manera de verificar si una página existe por su título de usuario final, en lugar de por su ruta?

preguntado el 04 de julio de 12 a las 07:07

2 Respuestas

Puede obtener la lista de niños y recorrer los títulos. De lo contrario, no hay una función existente que haga esto, aunque su expresión regular me parece buena.

Respondido 04 Jul 12, 18:07

Desafortunadamente, mi comportamiento de expresiones regulares es ligeramente diferente del comportamiento que se ve en la interfaz de usuario. Específicamente, los espacios en blanco iniciales y finales combinados con caracteres reemplazados hacen cosas divertidas. Traté de rastrear y romper la interfaz de usuario y ver si podía aplicar ingeniería inversa al código real, pero el nivel de ofuscación está más allá de mis intentos. Iterar a través de todas las páginas es una opción que no había considerado, bastante mala, pero posible. - onno benschop

Puede intentar usar el método de búsqueda (), pasando el título no normalizado y luego inspeccionar los resultados para ver si alguna de las páginas tiene el título esperado.

Respondido 18 Jul 12, 16:07

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.