Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google apps script 更改Google文档中的链接表源_Google Apps Script_Google Sheets_Google Docs - Fatal编程技术网

Google apps script 更改Google文档中的链接表源

Google apps script 更改Google文档中的链接表源,google-apps-script,google-sheets,google-docs,Google Apps Script,Google Sheets,Google Docs,谢谢你对我的帮助 我使用一个脚本自动将内容从电子表格推送到文档中,作为一种超级邮件合并。更改文档中的文本没有问题,但要使文档中的表正常工作却变得更加困难 文档中的每个表都链接到电子表格。在运气有限的情况下,我尝试做以下任何一项: 将文档上的源表从一个电子表格更改为另一个电子表格,然后更新所有值。 更新文档上的所有源表,然后取消与源的链接。 直接将范围从电子表格复制到文档。 到目前为止我一点运气都没有。下面的代码就是我要做的。getLinkUrl属性为文档中找到的每个表返回null。任何指点都将不

谢谢你对我的帮助

我使用一个脚本自动将内容从电子表格推送到文档中,作为一种超级邮件合并。更改文档中的文本没有问题,但要使文档中的表正常工作却变得更加困难

文档中的每个表都链接到电子表格。在运气有限的情况下,我尝试做以下任何一项:

将文档上的源表从一个电子表格更改为另一个电子表格,然后更新所有值。 更新文档上的所有源表,然后取消与源的链接。 直接将范围从电子表格复制到文档。 到目前为止我一点运气都没有。下面的代码就是我要做的。getLinkUrl属性为文档中找到的每个表返回null。任何指点都将不胜感激

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());
  }  
}

设置表的链接URL并不意味着任何自动数据更新。这只是指向其他资源的超链接,仅此而已。如果以前没有使用Table.setLinkUrl方法显式设置链接,那么每次调用Table.getLinkUrl都会得到null

下面是至少有一个表的文档的示例代码,其中该方法返回一个字符串值,而不是null


你试过实现空值检查吗?@jess,谢谢你的建议,但是检查空值不是问题。使用getLinkUrl for tables不会返回表的链接URL,它会返回已分配给该表的任何超链接。谢谢,我理解在这种情况下,getLinkUrl for tables不是正确的方法。我想知道是否有一种方法可以获取或设置表链接。上面的代码只是将表中所有单元格的文本链接到stackoverflow.com。这不是OP提出的问题。我很乐意为这个问题提出一个简单而全面的解决方案,但如果没有呢?要获得完整的解决方案,需要对细节进行彻底的研究,并编写大量代码。也许整个图书馆。。。如果可能的话,给出你的答案。
function getLinkUrl() {
  var doc = DocumentApp.getActiveDocument();
  var tables = doc.getBody().getTables();
  tables[0].setLinkUrl('https://stackoverflow.com');
  Logger.log(tables[0].getLinkUrl());
}