Изменить источник связанной таблицы в Google Doc - PullRequest
0 голосов
/ 01 февраля 2019

Ценю любую помощь, которую я могу получить по этому вопросу.

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

Каждая таблица в документе связана с электронной таблицей.Что я пытаюсь сделать с ограниченным везением, это одно из следующих действий:

  • Измените исходную таблицу в документе с одной электронной таблицы на другую, затем обновите все значения.
  • Обновите все исходные таблицы в документе, затем отмените связь с источником.
  • Непосредственное копирование диапазонов из электронной таблицы в документ.

Мне не повезло, поэтомудалеко.Код ниже, где я до.атрибут getLinkUrl() возвращает ноль для каждой таблицы, найденной в документе.Любые указатели будут оценены.

function updateTables(documentID,spreadsheetID){

  var ui = SpreadsheetApp.getUi();

//Check if input was passed
  if(documentID === undefined){
    var documentURL = ui.prompt('Table Update Module','Please enter the url of the document you wish to update tables on.', ui.ButtonSet.OK_CANCEL);
//Check for cancel
    if(documentURL.getSelectedButton() == ui.Button.OK){ 
      documentID = getIdFromUrl(documentURL.getResponseText());
    }else{
      Logger.log('Exit when asked for document URL.');
      return;}
  }
  Logger.log('Replacement document ID: ' + documentID);

//Check if input was passed
  if(spreadsheetID === undefined){
    var spreadsheetURL = ui.prompt('Table Update Module','Please enter the url of the spreadsheet you wish to get the tables from.', ui.ButtonSet.OK_CANCEL);
//Check for cancel
    if(spreadsheetURL.getSelectedButton() == ui.Button.OK){ 
      spreadsheetID = getIdFromUrl(spreadsheetURL.getResponseText());
    }else{
      Logger.log('Exit when asked for spreadsheet URL.');
      return;}
  }
  Logger.log('Replacement spreadsheet ID: ' + spreadsheetID);

//Get tables
  var documentTables = DocumentApp.openById(documentID).getBody().getTables();

//Loop through tables
  for(var i = 0; i < documentTables.length; ++i){
    Logger.log('Table URL: ' + documentTables[i].getLinkUrl());
  }  
}

1 Ответ

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

Установка URL ссылки на таблицу не означает автоматическое обновление данных.Это только гиперссылка на какой-то другой ресурс, не более того.Если вы ранее не устанавливали ссылку явно, используя метод Table.setLinkUrl(), вы получите null при каждом вызове Table.getLinkUrl().

Ниже приведен пример кода для документа, имеющего по адресуминимум 1 таблица, где метод возвращает строковое значение, а не null .

function getLinkUrl() {
  var doc = DocumentApp.getActiveDocument();
  var tables = doc.getBody().getTables();
  tables[0].setLinkUrl('https://stackoverflow.com');
  Logger.log(tables[0].getLinkUrl());
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...