【问题标题】:Google Apps Script debugger hangs when working with a specific string使用特定字符串时,Google Apps 脚本调试器挂起
【发布时间】:2021-06-04 18:19:16
【问题描述】:

我遇到了一个非常奇怪的错误,无法完全弄清楚它有什么问题。

这是重现此问题的代码:

function testDoubleQuote() {
  var xmlString = '<file><text>Ehf asor nkles pov ujfemniuea zeïerasvrtrw er Beaetrgfbvcyu Nbv., jei of asverqzsda vsdrersza vd. &lt;br /&gt;&lt;br /&gt;Ba erq vazerqhg nba lake erqybfa zvay rv asehgr va erqbu: “Er zhfa veqhazf qeyrreqgf?” Rq mnbsr ojgbeq pliyt mnbver zvae htwe nbrefpuk kj bmaner er mejreplrqv mneuijerbvce qtcx xi xghte hrfd erzemnbuyrewzsdez.</text></file>';
  var xml = XmlService.parse(xmlString);
  var content = xml.getAllContent();
  var text = content[0].getValue();
  console.log(text);
}

GAS 挂在线上 getValue();其他获取文本的尝试似乎也不起作用。但是,如果我手动从字符串中删除 ï、“ 或 ”,它似乎可以工作。如果我删除任何两个字符,它会再次起作用。这是怎么回事?字符串有字符限制吗?其他工作?调试器只是挂起。

我编写的一个脚本,用于在解析“作品”之后从 XML 对象创建一个 Javascript 对象,因为它创建了对象。但是,当尝试查看对象的文本内容时,调试器永远不会停止加载它。当我逐步完成该过程时,它会在获取特定文本值时挂在 getValue() 或 getText() 或 getChildText(name) 上。我猜它创建它是因为 GAS 在很大程度上是异步运行的,并且这些特定值的函数永远不会返回,但由于某种原因被忽略了。

我似乎无法从 GAS 获得更多关于正在发生的事情的信息。这是由 XmlService.parse() 引起的吗?

【问题讨论】:

  • 它不适合我。
  • 我也试过这个,没有遇到这个问题。您是否尝试过使用不同的互联网连接?还是其他帐户?
  • @RonM 这是个好主意!我将尝试使用不同的帐户并重新创建整个环境。希望它与帐户相关。
  • 我很好奇在字符串开头添加序言是否对您有任何影响:var xmlString = '&lt;?xml version = "1.0" encoding = "UTF-8" standalone = "no" ?&gt;&lt;file&gt;&lt;text&gt;Ehf ... rewzsdez.&lt;/text&gt;&lt;/file&gt;';.
  • @andrewjames 它有一个序言,但没有“独立”部分。我删除了它,看看它是否有任何改变。

标签: javascript debugging google-apps-script utf-8 freeze


【解决方案1】:
function testDoubleQuote() {
  var xmlString = '<file><text>Ehf asor nkles pov ujfemniuea zeïerasvrtrw er Beaetrgfbvcyu Nbv., jei of asverqzsda vsdrersza vd. &lt;br /&gt;&lt;br /&gt;Ba erq vazerqhg nba lake erqybfa zvay rv asehgr va erqbu: “Er zhfa veqhazf qeyrreqgf?” Rq mnbsr ojgbeq pliyt mnbver zvae htwe nbrefpuk kj bmaner er mejreplrqv mneuijerbvce qtcx xi xghte hrfd erzemnbuyrewzsdez.</text></file>';
  var xml = XmlService.parse(xmlString);
  var content = xml.getAllContent();
  //Logger.log(content.length);
  var text = content[0].getValue();
  Logger.log(text);
}

Execution log
1:52:09 PM  Notice  Execution started
1:52:10 PM  Info    Ehf asor nkles pov ujfemniuea zeïerasvrtrw er Beaetrgfbvcyu Nbv., jei of asverqzsda vsdrersza vd. <br /><br />Ba erq vazerqhg nba lake erqybfa zvay rv asehgr va erqbu: “Er zhfa veqhazf qeyrreqgf?” Rq mnbsr ojgbeq pliyt mnbver zvae htwe nbrefpuk kj bmaner er mejreplrqv mneuijerbvce qtcx xi xghte hrfd erzemnbuyrewzsdez.
1:52:10 PM  Notice  Execution completed

【讨论】:

  • 非常有趣。我想知道为什么它挂在我身上。我在不同的计算机和浏览器上尝试过它(并不是说它会有所作为,它不应该)但它仍然挂起。可能与帐户或脚本相关。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-10-12
  • 2020-05-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多