1

Google Apps Script を使用してテキストをドキュメント テンプレートに置き換え、.pdf として保存しようとしています。私はほとんど成功していますが、1つの問題があります。スクリプトでテンプレート内のテキストを検索し、テキストを提供されたテキストに置き換え、箇条書きを使用したいと思います。テキストに配置された余分な \n は無視されます。以下にテキストの例を示します。

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 ドキュメントのインデックスの概念を理解するのに最も苦労しています。ありがとうございました。


こんにちは。私がこれをどのように実装したかをあなたに知らせたかっただけです:

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]);

それが役立つことを願っています。要素を互いに後方に押し戻します。

4

1 に答える 1

0

さて、この粗雑なコードは、別の子要素のように見える TEXT を含む PARAGRAPH の先頭に挿入されているようです。おそらく、この特定のコードは、テキストがサブテーブル、サブリストなどの内部にない場合にのみ機能しますが、おそらく役立つでしょう。

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() を使用するまでのメッセージなので、そこに注意してください。

于 2013-09-26T05:33:07.343 に答える