gpt4 book ai didi

javascript - 使用 .setBold() 时,为什么 Google Apps 脚本会抛出 'ReferenceError: "粗体“未定义”?

转载 作者:行者123 更新时间:2023-11-28 00:34:13 26 4
gpt4 key购买 nike

上下文:我需要处理/更正许多包含多个特定文本错误的文本文档,以“粗体”突出显示关键字,然后输出结果。我有一个包含两个工作表的 Google 电子表格:其中一个包含两列“错误词形”和“替换词形”(二维数组),我打算随着时间的推移将其添加到其中,将其用作“调用来源”的数据存储;另一个是单列单词集合(一维数组),我指定要检查的“关键字”,然后在目标文档中突出显示。

我尝试过的有效方法:我使用了初学者视频中的基本数组迭代循环(我还无法添加更多链接,抱歉)并在 body 中进行了交换。 sendEmail() 的 ReplaceText() 成功地将我的“数据存储”中的更正处理到我的目标文档中,效果几乎完美。它会忽略大小写不完全相同的文本值...但这是另一天的问题。

function fixWords() {
// Document to edit
var td = DocumentApp.openById('docId1');
// Document holding comparison datastore
var ss = SpreadsheetApp.openById('docId2');
// Create data objects
var body = td.getBody();
var sheet = ss.getSheetByName("Word Replacements");
var range = sheet.getDataRange();
var values = range.getValues();
// Create a loop (iterate through the cell data)
for (i=1;i<values.length;i++) {
fault = values[i][0];
solution = values[i][2];
body.replaceText(fault, solution);
}
}

我尝试失败的事情:然后我尝试用 replaceText() 代码替换 setBold() 的值,但我得到的最接近的是数组中关键字的第一个实例将被正确设置样式,但不再有它的实例...与使用 fixWords 函数从单词替换数组中纠正拼写错误的单词的所有实例不同.

我找到了'highlightTextTwo' example here at stackoverflow效果很好,但我不知道如何交换外部数据源或强制包含的不同迭代循环对我有利。

我扫描了 GAS 引用,观看了 Google developer videos for snippets that might apply ...但显然我错过了一些可能是编程基础的东西。但老实说,我不知道为什么这不像 body.replaceText() 功能那么简单。

function boldKeywords() { // https://stackoverflow.com/questions/12064972
// Document to edit
var doc = DocumentApp.openById('docId1');
// Access the keyword worksheet, create objects
var ss = SpreadsheetApp.openById('docId2');
var sheet = ss.getSheetByName("Keywords");
var range = sheet.getDataRange();
var values = range.getValues();

var highlightStyle = {};
highlightStyle[DocumentApp.Attribute.BOLD] = 'true';

for (i=1; i<values.length; ++i) {
textLocation = values[i];
if (textLocation != null && textLocation.getStartOffset() != -1) {
textLocation.getElement().setAttributes(textLocation.getStartOffset(),textLocation.getEndOffsetInclusive(), highlightStyle);
}
}
}

这会抛出 'TypeError: Cannot find function getStartOffset in object DIV. (第 15 行,文件“boldIt”)。' 我猜这意味着通过盲目地交换这段代码,它会查找错误的对象......但我无法弄清楚为什么它适用于 x .replaceText() 而不是 x.setAttributes()x.setBold.getElement().getText().editAsText() ...似乎没有一个“学习 Google Apps 脚本示例”来处理如此低规模的平凡、无趣的用例...足以让我弄清楚如何指导它到正确的对象,然后操作“if 语句”参数以获得我需要的行为。

我当前的砖墙:我再次发现了这个例子,Text formatting for strings in Google Documents from Google Apps Script ,尽管 DocsList 语法已被弃用(我相当确定),但它似乎很有希望。但现在我收到了“粗体未定义”的信息。粗体...未定义。 ::张大嘴::

function boldKeywords() {
// Access the keyword worksheet, create objects
var ss = SpreadsheetApp.openById('docId1');
var sheet = ss.getSheetByName("Keyterms");
var range = sheet.getDataRange();
var values = range.getValues();

// Open target document for editing
var doc = DocumentApp.openById('docId2');
var body = doc.getBody();

// Loop function: find given keyword value from spreadsheet in target document
// and then bold it (highlight with style 'bold')
for (i=1; i<values.length; ++i) {
keyword = values[i];
target = body.findText(keyword);
body.replaceText(target,keyword);
text = body.editAsText();
text.setBold(text.startOffset, text.endOffsetInclusive, bold);
}
}

我很乐意牺牲我的长子,以便你的庄稼在来年能够茂盛,以换取一些见解。

最佳答案

我将其用于我的脚本,即 setStyleAttribute 方法。

文档:https://developers.google.com/apps-script/ui_supportedStyles

示例:

TexBox.setStyleAttribute("fontWeight", "bold");

关于javascript - 使用 .setBold() 时,为什么 Google Apps 脚本会抛出 'ReferenceError: "粗体“未定义”?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28657624/

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