我对 Google 脚本中如何处理字符串感到非常困惑。特别是,似乎字符串可以设置样式,但我不知道如何实际做到这一点。
例如:我创建一个 Google 表单,添加一个短文本问题,然后复制粘贴此处生成的粗体文本:https://lingojam.com/BoldTextGenerator
如果我使用脚本打开此表单,我可以使用
恢复此文本 var form = FormApp.openById(formID);
var Items = form.getItems();
var test = Items[0].getTitle();
这个“test”变量是一个字符串(我用 Logger.log(typeof(test)) 检查过),而不是“Text”或“RichText”,并且 .isBold() 等方法将不起作用。
但是,Logger.log(test) 确实在日志日志中输出粗体文本 - 因此该字符串确实包含有关其样式的一些信息。
但是,我似乎无法在 Google 脚本中定义样式字符串。我尝试过不同的方法,但没有成功
var dummy = "Hello World !"
Logger.log(dummy.bold())
Logger.log(dummy.setBold(true))
Logger.log(dummy.setFontWeight("bold"))
Logger.log("<b>"+dummy+"</b>")
Logger.log("**"+dummy+"**")
我该怎么做才能让我的虚拟字符串以粗体字体记录(我的真正目标是使用 .setTitle(dummy) 方法来获得粗体字体表单项)?
我相信你的目标如下。
不幸的是,现阶段,在Google Form服务中还没有直接管理Google Form上每个项目标题的富文本的方法。但是,当将粗体文本直接复制并粘贴到Google Form上的项目标题时,就可以完成。因此,在这个答案中,使用这个作为当前的解决方法,我想建议将文本数据转换为带有unicode的粗体文本,并将转换后的文本放入Google Form。
此解决方法的流程如下。
当上述流程反映到脚本中时,就会变成如下所示。
function myFunction() {
// 1. Convert the text to the bold type with the unicode.
const conv = {
c: function(text, obj) {return text.replace(new RegExp(`[${obj.reduce((s, {r}) => s += r, "")}]`, "g"), e => {
const t = e.codePointAt(0);
if ((t >= 48 && t <= 57) || (t >= 65 && t <= 90) || (t >= 97 && t <= 122)) {
return obj.reduce((s, {r, d}) => {
if (new RegExp(`[${r}]`).test(e)) s = String.fromCodePoint(e.codePointAt(0) + d);
return s;
}, "")
}
return e;
})},
bold: function(text) {return this.c(text, [{r: "0-9", d: 120734}, {r: "A-Z", d: 120211}, {r: "a-z", d: 120205}])},
italic: function(text) {return this.c(text, [{r: "A-Z", d: 120263}, {r: "a-z", d: 120257}])},
boldItalic: function(text) {return this.c(text, [{r: "A-Z", d: 120315}, {r: "a-z", d: 120309}])},
};
var newTitle = "New title for item 1";
var convertedNewTitle = conv.bold(newTitle); // Bold type
// var convertedNewTitle = conv.italic(newTitle); // Italic type
// var convertedNewTitle = conv.boldItalic(newTitle); // Bold-italic type
// 2. Put to the converted text to the title of item on Google Form.
var formID = "###"; // Please set the Form ID.
var form = FormApp.openById(formID);
var Items = form.getItems();
Items[0].setTitle(convertedNewTitle);
}
使用上述示例脚本时,得到以下结果。
从: 到:https://jsfiddle.net/7bL5r3em/
谢谢,这对我有用。我只是想知道如何将粗体 Unicode 字符转换为普通文本?这样当我获取项目的标题文本时,我想将文本转换回正常文本而不是粗体字符。谢谢。