如何将表格从电子表格复制到Google文档,作为“电子表格的链接”?

时间:2020-10-30 10:18:25

标签: google-apps-script google-sheets google-docs google-workspace

当用户从电子表格中手动复制范围并将其粘贴到Google文档时,它会提示“链接到电子表格”和“正常粘贴”选项。

我需要执行“使用Google Apps脚本链接到电子表格”功能

link to spreadsheet while pasting manually


用例上下文

我们有一个包含表格的电子表格,我们试图将其复制到最终文档中,以便用户可以添加其他内容。

因此,如果出于某种原因需要在电子表格中更改某些值,我们的用户只想简单地刷新表数据即可。

1 个答案:

答案 0 :(得分:4)

答案

没有解决方法,这是不可能的。

table object in the documentation中,没有方法可以像UI中那样插入带有“到电子表格的链接”的表格。在table object in the Docs API中寻找也没有暴露。您可以在Issue Tracker中为此提出功能请求,此刻,我看不到任何功能请求。

可能的解决方法

任何解决方法都不会像UI那样无缝,但是,如果您要自动从特定来源插入表,下面是一个示例。

请注意,这只是一个起点。您应该对此进行试验,然后,如果您需要更多功能并遇到问题,则应该就所遇到的具体问题提出新的问题。

简介和初始步骤

此脚本将从工作表中获取表格。该表应该是工作表中的 only 。脚本的设置方式是使用getDataRange,它会自动选择工作表中的所有数据。您可以根据自己的用例修改此设置,具体取决于电子表格的设置方式。

![enter image description here

然后它将追加表格到文档末尾。您可以根据需要进行修改。它将保留大多数格式。

enter image description here

样式将不完全匹配,不过再次强调,您可以根据使用情况来消除细节。

说明

  1. 获取电子表格和文档的ID号
  2. 创建脚本文件
  3. 复制此功能:
function appendTable() {
  
  // Replace these values with your Sheet ID, Document ID, and Sheet Name
  
  let ssId = '<your spreadsheet id>' // REPLACE
  let docId = '<your document id>' // REPLACE
  let sheetName = '<your sheet name>' // REPLACE
  
  // Sheet
  let range = SpreadsheetApp.openById(ssId).getSheetByName(sheetName).getDataRange()
  let values = range.getValues();
  let backgroundColors = range.getBackgrounds();
  let styles = range.getTextStyles();
  
  
 // Document
  let body = DocumentApp.openById(docId).getBody();
  let table = body.appendTable(values);
 
  for (let i=0; i<table.getNumRows(); i++) {
    for (let j=0; j<table.getRow(i).getNumCells(); j++) {
      
      let docStyles = {};
      
      docStyles[DocumentApp.Attribute.BACKGROUND_COLOR] = backgroundColors[i][j];
      docStyles[DocumentApp.Attribute.FONT_SIZE] = styles[i][j].getFontSize();
      docStyles[DocumentApp.Attribute.BOLD] = styles[i][j].isBold()
      
      table.getRow(i).getCell(j).setAttributes(docStyles);
    }
  }
}
  1. 运行脚本!
  2. 设计您希望用户如何运行此程序,并可能设置此附加程序。虽然这超出了这个问题的范围。

参考文献