网站和文档中的动态值
dynamic values in websites and docs
假设我的公司有一个网站,其中包含各种文字。它包含的文本之一是我的人力资源总监的名字。 His/her 姓名可能会在我们网站的各种页面和文档中出现 20 或 30 次。而且,如果发生变化并且我聘请了新的人力资源总监,则必须有人手动更改这 20 或 30 个值。
必须有更好的方法来做到这一点。一种选择是清除网站上所有实例中的个人数据,但只有一个 "Contact the Director of HR,",然后具有一个值 "the director of HR is...",并将人力资源总监的所有实例超链接到员工页面。但我对动态值很感兴趣。
首先,假设我有 this Google Doc and this Google Sheet。当我更改 Google Sheet 上的值时,如何让 Google Doc 上的值发生变化?
您可以使用应用程序脚本从 Sheet 生成文档。
您将转到 Sheet 中的工具 -> 脚本编辑器。
每次你 运行 这个脚本都会生成一个新的 Doc,它的值在你的 sheet 中。
function myFunction() {
var doc = DocumentApp.create('HR Sheet');
var data = SpreadsheetApp.getActive().getDataRange().getValues()
var body = doc.getBody();
body.appendParagraph(data[1][1]);
}
如果您 运行 此脚本将生成一个新的 sheet 并将人力资源总监的姓名放在 sheet 上。
您想执行以下操作:
- 从 Sheet 中获取
ROLES
和 NAMES
的列表。
- 对于每个
ROLE/NAME
对,在 Google 文档中查找特定值,并将该值替换为相应的 NAME
.
您可以使用 replaceText(searchPattern, replacement) 来实现。可能是这样的:
function findAndReplace() {
// Get "Sheet1", where data is:
var sheet = SpreadsheetApp.openById("your-spreadsheet-id").getSheetByName("Sheet1");
// Get the document body:
var doc = DocumentApp.openById("your-doc-id").getBody();
// Get the "ROLE/NAME" values:
var values = sheet.getRange(2, 1, sheet.getLastRow() - 1, 2).getValues();
// For each "ROLE/NAME" pair, replace text:
values.forEach(row => body.replaceText("{{" + row[0] + "}}", row[1]));
}
注:
- 在此示例中,要在 Doc 中查找的值是使用每个相应的角色构建的,具有以下模式:
{{your-role-name}}
。 [
是正则表达式的特殊字符,所以我认为使用{{
更适合这种情况。
参考:
这些答案很好:Google 文档(这是我问的问题)。但是关于:网站,我发现这个非常有用的插件 TablePress 和扩展 Single Cell Content Shortcode。在 Wordpress 页面中填充我的人力资源总监就像使用简码 [table-cell id=1 cell=C3 /] 一样简单。
我现在正在玩自动刷新,它会定期从 URL 重新填充上传的 Sheet,所以我不必重新上传 Google Sheet 每次。
对于我在 Wordpress 页面上填充 Google Sheet 值的目的,它看起来会 100% 有效。
假设我的公司有一个网站,其中包含各种文字。它包含的文本之一是我的人力资源总监的名字。 His/her 姓名可能会在我们网站的各种页面和文档中出现 20 或 30 次。而且,如果发生变化并且我聘请了新的人力资源总监,则必须有人手动更改这 20 或 30 个值。
必须有更好的方法来做到这一点。一种选择是清除网站上所有实例中的个人数据,但只有一个 "Contact the Director of HR,",然后具有一个值 "the director of HR is...",并将人力资源总监的所有实例超链接到员工页面。但我对动态值很感兴趣。
首先,假设我有 this Google Doc and this Google Sheet。当我更改 Google Sheet 上的值时,如何让 Google Doc 上的值发生变化?
您可以使用应用程序脚本从 Sheet 生成文档。
您将转到 Sheet 中的工具 -> 脚本编辑器。
每次你 运行 这个脚本都会生成一个新的 Doc,它的值在你的 sheet 中。
function myFunction() {
var doc = DocumentApp.create('HR Sheet');
var data = SpreadsheetApp.getActive().getDataRange().getValues()
var body = doc.getBody();
body.appendParagraph(data[1][1]);
}
如果您 运行 此脚本将生成一个新的 sheet 并将人力资源总监的姓名放在 sheet 上。
您想执行以下操作:
- 从 Sheet 中获取
ROLES
和NAMES
的列表。 - 对于每个
ROLE/NAME
对,在 Google 文档中查找特定值,并将该值替换为相应的NAME
.
您可以使用 replaceText(searchPattern, replacement) 来实现。可能是这样的:
function findAndReplace() {
// Get "Sheet1", where data is:
var sheet = SpreadsheetApp.openById("your-spreadsheet-id").getSheetByName("Sheet1");
// Get the document body:
var doc = DocumentApp.openById("your-doc-id").getBody();
// Get the "ROLE/NAME" values:
var values = sheet.getRange(2, 1, sheet.getLastRow() - 1, 2).getValues();
// For each "ROLE/NAME" pair, replace text:
values.forEach(row => body.replaceText("{{" + row[0] + "}}", row[1]));
}
注:
- 在此示例中,要在 Doc 中查找的值是使用每个相应的角色构建的,具有以下模式:
{{your-role-name}}
。[
是正则表达式的特殊字符,所以我认为使用{{
更适合这种情况。
参考:
这些答案很好:Google 文档(这是我问的问题)。但是关于:网站,我发现这个非常有用的插件 TablePress 和扩展 Single Cell Content Shortcode。在 Wordpress 页面中填充我的人力资源总监就像使用简码 [table-cell id=1 cell=C3 /] 一样简单。
我现在正在玩自动刷新,它会定期从 URL 重新填充上传的 Sheet,所以我不必重新上传 Google Sheet 每次。
对于我在 Wordpress 页面上填充 Google Sheet 值的目的,它看起来会 100% 有效。