Я пытался разобраться с набором изображений в документе, используя скрипт Google Apps. Мне удается сделать то, что я хочу, то есть взять изображения из моего документа и поместить их в таблицу с двумя строками и столбцом, где первая строка содержит пространство для описания изображения, а вторая содержит само изображение. Однако у меня возникают трудности при просмотре абзацев моего документа, мой сценарий находит абзац без детей. Это сгенерировало исключение времени выполнения следующим образом: Исключение: дочерний индекс (0) должен быть меньше, чем количество дочерних элементов (0). Я пытался обработать это с помощью if (), но когда я достигаю пустой абзац, выдается то же исключение. Код моего скрипта приведен ниже:
function manipuleImage(){
var doc = DocumentApp.getActiveDocument();
var body = doc.getBody();
var paragraphs = body.getParagraphs();
var imagens = body.getImages();
var image = imagens[0];
var typeImage = image.getType();
for(var i = 0; i < paragraphs.length; i++){
var paragraph = paragraphs[i];
if(paragraph.getChild(0) != 0){
var child = paragraph.getChild(0);
var typeChild = child.getType();
if(typeChild == "INLINE_IMAGE"){
var cells = [
[''],['']
];
var styleCell = {};
styleCell[DocumentApp.Attribute.FONT_SIZE] = 11;
styleCell[DocumentApp.Attribute.BOLD] = true;
styleCell[DocumentApp.Attribute.FOREGROUND_COLOR] = '#ffffff';
styleCell[DocumentApp.Attribute.FONT_FAMILY]='Roboto';
styleCell[DocumentApp.Attribute.VERTICAL_ALIGNMENT] = DocumentApp.VerticalAlignment.CENTER;
styleCell[DocumentApp.Attribute.HORIZONTAL_ALIGNMENT] = DocumentApp.HorizontalAlignment.CENTER;
var tableImage = body.insertTable(i, cells)
tableImage.getRow(0).getCell(0).setBackgroundColor("#ef5350");
tableImage.setBorderColor("#ef5350");
tableImage.setBorderWidth(1);
tableImage.getRow(0).getCell(0).setAttributes(styleCell);
tableImage.getRow(1).getCell(0).setAttributes(styleCell);
tableImage.getRow(0).getCell(0).setTextAlignment(DocumentApp.TextAlignment.NORMAL);
tableImage.getRow(1).getCell(0).setTextAlignment(DocumentApp.TextAlignment.NORMAL);
var appendImage = tableImage.getRow(1).getCell(0).clear().appendImage(child.getBlob());
var index = i + 1;
body.removeChild(body.getChild(index));
var imageH = appendImage.getHeight() / 2;
var imageW = appendImage.getWidth() / 2;
appendImage.setHeight(imageH).setWidth(imageW);
}
}
}
}