Как получить выбранную таблицу в скрипте Google Apps - PullRequest
0 голосов
/ 08 февраля 2019

Я пишу скрипт, который будет использовать таблицу, выбранную пользователем.Однако, используя DocumentApp.getActiveDocument().getSelection().getRangeElements(), вы получите только отдельные ячейки.Я думал, что смогу просто восстановить таблицу, но все ячейки находятся в одном длинном списке без информации о строках или столбцах, и пользователь должен иметь возможность выбирать таблицу любой высоты / ширины, не сообщая программе, какие размерыявляются.Я также подумал о том, чтобы программа автоматически выбирала немного впереди, чтобы рассматривать таблицу как таблицу, а не отдельные ячейки, но при этом все равно выбираются отдельные ячейки (но не все из них, что немного странно). Спасибо за любые отзывы/ помощь! * * 1002

1 Ответ

0 голосов
/ 08 февраля 2019

Замена таблицы, выбранной путем размещения курсора в любой ячейке

Я только что создал двумерный массив для таблицы, которую нужно заменить.

Если вы попытаетесь привести первый элемент к asTable (), вы получите ошибку 'PARAGRAPH не может быть приведен к TABLE.' , тогда, если вы добавите еще один getParent (), выполучить ошибку 'TABLE_CELL не может быть приведен к TABLE.', а затем добавьте еще один getParent (), и вы получите ошибку ' TABLE_ROW не может быть приведен к TABLE. ' и, наконец, добавление еще одного getParent () наконец проходит через перчатку и заменяетстол.Вы можете поместить курсор в любую ячейку таблицы.Это было что-то вроде хака, но, в конце концов, это сработало.Было бы гораздо сложнее понять это, не зная, как использовать ресурсы отладки, которые предоставляет Google.

function replaceTableAtCursor(){
  var doc=DocumentApp.getActiveDocument();
  var body=doc.getBody();
  var el=doc.getCursor().getElement().getParent().getParent().getParent();//element/cell/row/table
  var table=el.asTable();
  var t=[];//This is the table I used. Any 2D array will work like the ones you can get from getValues() method from spreadsheets.
  for(var i=0;i<3;i++){
    t[i]=[];
    for(var j=0;j<3;j++){
      t[i][j]=Utilities.formatString('i:%s,j:%s',i,j);
    }
  }
  var childIndex=body.getChildIndex(el)
  table.clear();
  body.insertTable(childIndex,t)  
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...