How to copy content and formatting between Google Docs?の回答は、要素をコピーするために条件付きコードを追加する必要があることを示しています。しかし、元の番号を付けずにリスト項目を表示するため、ListItem型では機能しません。このような番号付けを維持しながら、あるGoogleドキュメントから別のGoogleドキュメントにListItemをコピーするにはどうすればいいですか?
var source_doc = DocumentApp.getActiveDocument();
var selection = source_doc.getSelection();
if (!selection) {
var ui = DocumentApp.getUi();
ui.alert('Please make a selection first.');
return;
}
var target_doc = DocumentApp.create('CopyOf'+DocumentApp.getActiveDocument().getName());
var target_body = target_doc.getBody();
var elements = selection.getRangeElements();
for (var i = 1; i < elements.length; i++) {
var source_element = elements[i].getElement();
var copy_element = source_element.copy();
if (copy_element.getType() == DocumentApp.ElementType.PARAGRAPH) {
target_body.appendParagraph(copy_element);
} else if (copy_element.getType() == DocumentApp.ElementType.LIST_ITEM) {
// This does not keep the numbering on the list item. Why?
target_body.appendListItem(copy_element);
// And playing games with setListId doesn't work either:
// copy_element.setListId(source_element);
// target_body.appendListItem(copy_element);
}
// TODO: Handle the other elements here.
}
ソースドキュメントが表示されます。
ターゲット文書は次のようにレンダリング:
どのように私はのListItemの書式を保持しますか?
これははるかに難しいようです。私が本当に望むのは、すべての書式を保持している新しい文書と、Googleスクリプトからユーザーの選択をそのままコピーすることです。
これはより高いレベルで実行されるようです。スクリプトからではなく、手動で書式をコピー&ペーストして保存することができます。
私は実際には、より高いレベルからこれを行うために探しています。要素の種類の明示的なチェックは、私の好みではなく、保守可能ではありません。私はむしろ不愉快なアプローチを考えました。ドキュメント全体をコピー先にコピーして、不要なものを削除するだけです(問題は同じです)。 +1が、本当に私は後の答えではありません。 – bgoodr