- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
当用户从电子表格手动复制一个范围并将其粘贴到 Google 文档时,它会提示“链接到电子表格”和“正常粘贴”选项。
我需要执行“使用 google apps 脚本链接到电子表格”的功能
用例上下文
我们有一个包含表格的电子表格,我们正试图将其复制到我们的最终文档中,用户可以在其中添加其他内容。
因此,如果出于任何原因需要更改电子表格中的某些值,我们的用户只想简单地刷新表格数据。
最佳答案
如果没有解决方法,这是不可能的。
在table object in the documentation没有像 UI 中那样插入带有“电子表格链接”的表格的方法。求在table object in the Docs API那里也没有任何暴露。您可以在 Issue Tracker 中为此提交功能请求,目前,我看不到对此的任何功能请求。
任何解决方法都不会像 UI 那样无缝,但如果您想自动插入来自特定来源的表格,这里有一个示例。
请注意,这只是一个起点。您应该对此进行试验,然后如果您需要更多功能并遇到问题,您应该针对您遇到的具体问题提出新问题。
此脚本将从工作表中获取表格。这张表应该是工作表中唯一的东西。脚本的设置方式是使用 getDataRange
自动选择工作表中的所有数据。您可以根据电子表格的设置方式为您的用例修改此设置。
然后它将附加表格到文档的末尾。您可以根据需要修改它。它将保留大部分格式。
样式不会完全匹配,但同样,您可以根据您的用例确定细节。
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);
}
}
}
关于google-apps-script - 如何将表从电子表格复制到 Google 文档 `link to Spreadsheet`?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64606458/
我是一名优秀的程序员,十分优秀!