Tengo este script que reemplaza el texto en un Google Doc usando información de una hoja de cálculo de Google.
Aporte
La entrada es una celda dentro de una hoja de cálculo de Google que tiene saltos de línea suaves. 
Me gustaría convertir esos saltos de línea suaves en saltos de línea duros.
Solución hasta ahora
Puedo encontrar el salto de línea suave que escribo en la hoja de cálculo de Google buscando /\n/g. Sin embargo, cuando trato de reemplazar \n con \r, sigo obteniendo saltos de línea suaves.
demo_content = ss.getRangeByName("SectionContentsDemo").getValue().toString().replace(/\n/g,'\r\n'), template_doc_body.replaceText("{{Section Contents - Demo}}", demo_content);Puedo validar que es un salto de línea suave en lugar de uno duro porque todas las líneas en el párrafo de Google Doc están sangradas, como se comportaría un salto de línea suave.
¿Alguien tiene una idea de cómo reemplazar las roturas de línea suave por otras duras?
Gracias
Fuentes:
https://docs.google.com/spreadsheets/d/1VAU0-COifUd2j1PA5_td3tuDnBSqcnOo_4-cMqiAFUI
https://docs.google.com/document/d/1dQaDipbs3BkMYcHx_1s6qFjyltmLtbTrzzlmVX3Cl1o/
De su siguiente guión en su pregunta y sus situaciones de entrada y salida de muestra,
demo_content = ss.getRangeByName("SectionContentsDemo").getValue().toString().replace(/\n/g,'\r\n'), template_doc_body.replaceText("{{Section Contents - Demo}}", demo_content); Pensé que cuando el valor que incluye el salto de línea se reemplaza con {{Section Contents - Demo}} en su documento de Google, la sangría podría cambiarse después de la segunda línea. Entonces, en este caso, ¿qué tal usar la API de Docs? Cuando se usa la API de Docs, una secuencia de comandos de muestra es la siguiente.
Antes de usar este script, habilite la API de Documentos en los servicios avanzados de Google .
function myFunction() { var template_id = '###'; // Please set your template Google Document ID. var ss = SpreadsheetApp.getActiveSpreadsheet(); var value = ss.getRangeByName("SectionContentsDemo").getValue(); var documentId = DriveApp.getFileById(template_id).makeCopy().getId(); Docs.Documents.batchUpdate({ requests: [ { replaceAllText: { replaceText: value, containsText: { matchCase: true, text: "{{Section Contents - Demo}}" } } }] }, documentId); }SectionContentsDemo of Spreadsheet, y el valor recuperado se reemplaza con {{Section Contents - Demo}} en el documento. En este caso, parece que se sigue la sangría a {{Section Contents - Demo}} .