【问题标题】:push table info in google doc back to linked google sheet将谷歌文档中的表格信息推送回链接的谷歌表格
【发布时间】:2019-10-29 20:16:21
【问题描述】:
有没有办法从已链接的谷歌文档更新谷歌表格?基本上,我有一个带有链接的谷歌工作表的模板谷歌文档。我有一个脚本,可以在提交表单时复制谷歌文档。然后用适当的表单数据替换变量。
当我准备好时,我会用个人信息更新谷歌表格并更新谷歌文档。这工作正常,直到我需要对旧的谷歌文档进行更改......但由于我的谷歌文档链接到同一张表,我必须从旧的谷歌文档重新输入谷歌表中的信息,而不仅仅是编辑谷歌表。有没有办法将数据从谷歌文档推送回谷歌表格?
或者有没有办法将表格从谷歌表格插入并链接到带有应用程序脚本的谷歌文档?我发现将工作表链接到文档的唯一方法是使用复制和粘贴...
【问题讨论】:
标签:
google-apps-script
google-sheets
google-docs
【解决方案1】:
没有很好的答案。遗憾的是,Doc api 中没有公开刷新功能。但是,您可以使用 Apps 脚本将数据从工作表复制到文档中。它确实会丢失格式,因此您还必须重置格式,如下面的示例所示。
function copyDataFromSheetToDoc() {
var sheet = SpreadsheetApp.openById('1R0a4aj1iJA8IxlgYRMjsM7DytPItQxy3be7W55mitr4');
var data = sheet.getSheetByName('Sheet1').getRange("A1:C4").getValues();
var doc = DocumentApp.openById('1pMWRr_QbRlObLeulM0DUHZRCc1K6RCch9FMLOM0sSN0');
var body = doc.getBody();
// Update the first table.
var table = body.getTables()[0];
var headerStyle = {};
headerStyle[DocumentApp.Attribute.BOLD] = true;
headerStyle[DocumentApp.Attribute.FONT_SIZE] = 10;
var bodyStyle = {};
for (var r = 0; r < data.length; ++r) {
var row = data[r];
for (var c = 0; c < row.length; ++c) {
var cell = table.getCell(r, c);
cell.setText(row[c]);
if (r == 0) {
cell.setAttributes(headerStyle);
} else {
cell.setAttributes(bodyStyle);
}
}
}
doc.saveAndClose();
}