在Google文档中,您可以使用以下代码获取表格数组
var doc = DocumentApp.getActiveDocument();
var body = doc.getBody();
var tables = body.getTables();
但是,如果我使用光标获取表的元素,我想知道该元素属于数组中的哪个表。有一些方法可以获取表中元素的行和单元格,但是我找不到能给我表数组中父表索引的方法。有什么建议吗?
var doc = DocumentApp.getActiveDocument();
var cursor = doc.getCursor();
答案 0 :(得分:0)
var element = cursor.getElement();
while (element.getType() != "TABLE" && element.getType() != "BODY_SECTION"){
element = element.getParent();
}
Logger.log(element);
BODY_SECTION
)中获取表的子索引: if(element.getType() == "TABLE"){
var index = element.getParent().getChildIndex(element);
Logger.log(index);
}
重要:
您可以实现它,例如与
var tables = body.getTables().forEach(function(table){
Logger.log(body.getChildIndex(table))
});
完整样本:
function myFunction() {
var doc = DocumentApp.getActiveDocument();
var body = doc.getBody();
var tableIndices = [];
var tables = body.getTables().forEach(function(table){tableIndices.push(body.getChildIndex(table))});
var cursor = doc.getCursor();
var element = cursor.getElement();
while (element.getType() != "TABLE" && element.getType() != "BODY_SECTION"){
element = element.getParent();
}
Logger.log(element);
if(element.getType() == "TABLE"){
var index = element.getParent().getChildIndex(element);
var tableNumber = tableIndices.indexOf(index)+1;
Logger.log("The cursor is inside table " + tableNumber);
}
}
答案 1 :(得分:0)
由于@ziganotschka,我找到了解决方案。
function test() {
try {
var doc = DocumentApp.getActiveDocument();
var body = doc.getBody();
var cursor = doc.getCursor();
var element = cursor.getElement();
while( element.getType() !== DocumentApp.ElementType.TABLE ) {
element = element.getParent();
if( element === null ) return; // did not pick a table
}
var bIndex = element.getParent().getChildIndex(element);
Logger.log("bIndex= "+bIndex);
var i = 0;
var tIndex = -1;
var child = null;
while( i <= bIndex ) {
child = body.getChild(i);
Logger.log("i= "+i+" child= "+child)
if( child.getType() === DocumentApp.ElementType.TABLE ) tIndex++;
i++;
}
DocumentApp.getUi().alert("tIndex= "+tIndex);
}
catch(err) {
Logger.log("Error in test: "+err);
}
};