带有样式的Google脚本字符串

问题描述 投票:0回答:2

我对 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) 方法来获得粗体字体表单项)?

string google-apps-script fonts google-forms
2个回答
5
投票

我相信你的目标如下。

  • 您想要使用 Google Apps 脚本将粗体文本设置为 Google 表单上的项目标题。

问题和解决方法:

不幸的是,现阶段,在Google Form服务中还没有直接管理Google Form上每个项目标题的富文本的方法。但是,当将粗体文本直接复制并粘贴到Google Form上的项目标题时,就可以完成。因此,在这个答案中,使用这个作为当前的解决方法,我想建议将文本数据转换为带有unicode的粗体文本,并将转换后的文本放入Google Form。

此解决方法的流程如下。

  1. 使用 unicode 将文本转换为粗体。
    • 在此转换中,利用原始字符代码和粗体字符代码之间的差异,将文本中的每个字符转换为粗体类型。
  2. 将转换后的文本放入 Google 表单上的项目标题。

当上述流程反映到脚本中时,就会变成如下所示。

示例脚本:

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);
}
  • 在此示例脚本中,可以转换粗体、斜体和粗斜体类型。
    • 在这种情况下,数字和特定字符没有粗体、斜体和粗斜体类型。请小心这一点。

结果:

使用上述示例脚本时,得到以下结果。

从:

enter image description here

到:

enter image description here

测试

https://jsfiddle.net/7bL5r3em/

参考资料:


0
投票

谢谢,这对我有用。我只是想知道如何将粗体 Unicode 字符转换为普通文本?这样当我获取项目的标题文本时,我想将文本转换回正常文本而不是粗体字符。谢谢。

© www.soinside.com 2019 - 2024. All rights reserved.