Связать Google Документы с таблицей

Мне действительно нужна твоя помощь. Как связать отдельные ячейки в таблице с данными в документе? В таблице у меня есть расчеты, и мне нужно перенести результат в Google Docs с автоматическим обновлением. Как пример, "специальная вставка - ссылка" в Excel. Могу ли я сделать это в Google Docs?

1 ответ

Я все еще узнаю больше о Google Docs, так что, возможно, есть лучшие способы сделать это. Но вот функция, которая поможет вам определить дочерний индекс, индекс строки и индекс ячейки каждой таблицы в документе Google. Вторая функция может служить отправной точкой для извлечения данных из электронной таблицы и помещения их в этот дочерний индекс, индекс строки, индекс ячейки.

function findMyTables() 
{
  var doc=DocumentApp.getActiveDocument();
  var body=doc.getBody();
  var br='<br />';
  var s='';
  if(body)
  {
    var numChildren=body.getNumChildren();
    for(var i=0;i<numChildren;i++)
    {
      var child=body.getChild(i);
      if(child.getType()==DocumentApp.ElementType.TABLE)
      {
        s+=br + 'ChildIndex = ' + i;
        s+=br + 'Cell[row index][column index] ';
        var numrows = child.asTable().getNumRows();
        for(var j=0;j<numrows;j++)
        {
          var numcells=child.asTable().getRow(j).getNumCells();
          for(var k=0;k<numcells;k++)
          {
            var celltxt=child.asTable().getCell(j, k).editAsText().getText();
            s+=br + '<strong>Cell[' + j + '][' + k + ']= </strong>' + '<span style="color:#ff0000;font-size:14px;font-weight:bold;">' + celltxt + '</span>';
          }
        }
      }
    }
  }
  var html=HtmlService.createHtmlOutput(s).setWidth(600).setHeight(450);
  DocumentApp.getUi().showModelessDialog(html, 'My Tables');

Извлечь данные из электронной таблицы относительно просто, но я считаю, что попасть в Google Doc немного сложнее. Вот функция, которая берет дочерний индекс, индекс строки и индекс ячейки и вводит ваши данные в Google Docs. В настоящее время я не решил, почему это меняет форматирование. Я надеюсь, что одно из больших орудий на этом сайте пожалеет нас, бедных, пустых душ и просветит нас.

function saveChildTableCellChanges(childidx,rowidx,cellidx,text)
{
  var doc=DocumentApp.getActiveDocument();
  var child=doc.getBody().getChild(childidx);
  child.asTable().getRow(rowidx).getCell(cellidx).editAsText().setText(text);
}

Если вы можете жить без автоматического обновления (попробовал несколько предложений здесь и на форуме поддержки Google, ни один из них не работал для меня), вы можете просто скопировать несколько ячеек (не будет работать для одной ячейки) из электронной таблицы Google (ctrl+C) и вставить ее в вашем документе (ctrl+V) вам будет предложено выбрать:

Вставить таблицу:

[x] Ссылка на таблицу <- вам нужен этот вариант

[ ] Связь отключена

Вышеуказанное не будет отображаться, если вы вставите одну ячейку!

Обходные пути для отображения как "поддельная одиночная ячейка":

  1. Скопируйте и вставьте две ячейки, одна из которых содержит ваши данные, а другая пуста, в электронной таблице скройте столбец или строку с пустой ячейкой, обновите таблицу в документе.
  2. Скопируйте и вставьте две ячейки, одна из которых содержит ваши данные, а другая пуста, затем измените границу пустой ячейки, чтобы она была шириной 0 pt, и перетащите ее, чтобы она была как можно меньше (чтобы не нарушать поток вашего документа).

Если из-за макета вашего листа трудно найти пустые ячейки рядом с ячейками данных, просто создайте еще один лист (он может быть установлен как "защищенный", если хотите) в этой электронной таблице, ссылаясь только на данные, которые вы хотите связать в своем документе. и скопируйте с этого нового листа.


ПОМНИТЬ! Вам придется обновлять вручную, ваш документ должен показывать вам и кнопку обновления над связанной таблицей каждый раз, когда контент не синхронизируется.

Другие вопросы по тегам