gpt4 book ai didi

javascript - 如何使用 Google 脚本将特定列从 google 工作表提取到 google 文档?

转载 作者:行者123 更新时间:2023-12-02 21:18:16 24 4
gpt4 key购买 nike

我有一个带有动态字段标记的 Google 文档,例如 %Name% - %出生日期%,它从 A 列和 B 列中的 Google 工作表中获取值:

工作表截图

正如您所看到的,前 2 列中的值是相同的,因此 Google 文档中的“%”标记没有问题,因为它采用相同的值。
问题在于其他列(C、D、E...),其中 Google 工作表上的值是变量。

如何在 Google 文档中应用一个标记,通过变量值动态获取这些整列的值?

Screenshot of the Doc


预期结果:

enter image description here

此外,如何在脚本中设置具有固定值的列,例如。 (黄色)和具有变量值的列,例如。 (蓝色)?

而且,无论如何,如果我过滤电子表格,脚本就不起作用,为什么?

enter image description here

最佳答案

这是我的理解:

  • 您想要从电子表格中检索值并将其放入模板文档中。
  • 在电子表格中,所有行的“A”和“B”列的所有值都相同,例如 john25/05/1998 .
  • 您想要通过用电子表格中的值替换占位符来创建一个 Google 文档。
    • 占位符由 % 括起来.
  • 您希望使用 Google Apps 脚本来实现此目的。

流程:

该示例脚本的流程如下。

  1. 从电子表格中检索值。
  2. 创建一个对象以放入 Google 文档。
  3. 复制 Google 文档模板。
  4. 使用该对象将 header 值放入复制的文档中。
    • 在这种情况下,占位符将被检索到的值替换。
  5. 使用该对象放置表值。
    • 在本例中,检索到的值将直接放入模板文档中的表格中。

示例脚本:

运行脚本之前,请设置templateGoogleDocumentID .

function myFunction() {
var templateGoogleDocumentID = "###"; // Please set the template Google Document ID.

// 1. Retrieve values from Spreadsheet.
var activeSheet = SpreadsheetApp.getActiveSheet();
var values = activeSheet.getDataRange().getValues();

// 2. Create an object for putting to Google Document.
var object = {headers: {}, table: {}};
var headerRow = values.shift();
object.headers[headerRow[0]] = values[0][0];
object.headers[headerRow[1]] = Utilities.formatDate(values[0][1], Session.getScriptTimeZone(), "yyyy/MM/dd");
object.table = values.map(r => r.splice(2, 5));

// 3. Copy a template Google Document.
var copiedTemplateDoc = DriveApp.getFileById(templateGoogleDocumentID).makeCopy();
var docId = copiedTemplateDoc.getId();

// 4. Put the header values to the copied Document using the object.
var doc = DocumentApp.openById(docId);
var body = doc.getBody();
Object.keys(object.headers).forEach(h => body.replaceText(`%${h.toLowerCase()}%`, object.headers[h]));

// 5. Put the table values using the object.
// If the table rows of Google Document are less than that of Spreadsheet, the rows are added.
var table = body.getTables()[0];
var r = object.table.length - table.getNumRows();
if (r > 0) {
for (var i = 0; i < r; i++) {
var tr = table.appendTableRow();
for (var j = 0; j < 3; j++) {
tr.appendTableCell();
}
}
}
object.table.forEach((row, i) => (row.forEach((col, j) => (table.getCell(i, j).setText(col)))));
doc.saveAndClose();

// If you want to export the Google Document as PDF file, please use the following script.
// var newFile = DriveApp.createFile(doc.getBlob());
}

注意:

  • 在此修改后的脚本中,请在脚本编辑器中启用 V8。

引用文献:

关于javascript - 如何使用 Google 脚本将特定列从 google 工作表提取到 google 文档?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60912796/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com