2013-09-16 4 views
1

Я пытаюсь использовать Google Apps Script для замены текста в шаблоне Документов и сохранения его как .pdf. Я в основном успешный, но у меня есть одна проблема. Я хотел бы, чтобы сценарий искал текст в шаблоне, заменял текст предоставленным текстом, используя пули. Он будет игнорировать любые дополнительные \ n, которые могут быть помещены в текст. Ниже приведен пример текста:insertListItem (индекс, текст) Неверный индекс

Today was a good day. 
Tomorrow will be a good day. 

Yesterday was a decent day. 

В моем документе я хотел бы текст заменить _text_ в строке: Comments: _text_. В конечном счете, необходимо распечатать следующий:

Comments: 
- Today was a good day. 
- Tomorrow will be a good day. 
- Yesteday was a decent day. 

Это код, который я до сих пор, но он не работает слишком хорошо. Если бы кто-нибудь мог предложить какую-либо помощь, он был бы весьма признателен.

var listr = ""; 
var trunc = text.split("\n"); \\ where text is to be placed into the template 
var index = b.findText("_text_").getStartOffset(); \\ var b is getBody() 
for (var j = (trunc.length - 1); j >= 0; j--) 
    if(!trunc[j].equals("")) b.insertListItem(index, trunc[j]); 
b.replaceText("_text_", ""); 

Любая помощь будет очень признательна. У меня сложнее понять концепцию индексов в Документах Google. Спасибо.


Hello. Просто хочу сообщить, как я это сделал:

var trunc = text.split("\n"); \\where text is to be placed into the template 
var index = b.getChildIndex(b.findText("foo").getElement().getParent()) + 1; 
for (var j = (trunc.length - 1); j >= 0; j--) 
    if (trunc[j] != "") b.insertListItem(index, trunc[j]); 

Надеюсь, что это поможет. Он отталкивает элементы назад друг к другу назад.

+0

Хороший вопрос, можете ли вы поделиться любыми другими ресурсами, которые вы нашли? –

+0

@JasonK Пожалуйста, см. Правки выше, как я это сделал. Кажется, у меня мало документации, и я в лучшем случае являюсь любительским кодером. Мне понадобилось время, чтобы понять это. Ваш код мне очень помог, так что спасибо. знак равно – cvnntg

ответ

0

Хорошо, этот грубый код, кажется, вставляется в начале ПАРАГРАФА, содержащего ТЕКСТ, который представляет собой отдельный дочерний элемент. Вероятно, этот конкретный код будет работать, только если текст не находится внутри подкатегории, под-списка и т. Д. ... но, возможно, это поможет.

var element = DocumentApp.create('newDoc').getBody() 
    .appendListItem('testing').copy(); 
var index = b.getChildIndex(
    b.findText('_text_').getElement().getParent().asParagraph()); 
b.insertListItem(index, element); 

У меня был длинный день, может быть, я могу улучшить его позже, в основном то, что я думаю, что не хватало функция getChildIndex(). Также, используя newDoc, insertListItem() имел какой-то странный «Элемент должен быть отсоединен». до тех пор, пока я не использовал .copy(), так что заметьте.

Смежные вопросы