如何在 google 应用程序脚本中的按钮函数调用中传递对象

How to pass an object inside a function call of a button in google app script

我无法正确解析对象。此代码在后端。

var dummy = { rohan: "sharma" };
var downButton ='<input  type="button" value="Download" onclick="downloadFileAutomatically(\'' + JSON.stringify(dummy) +'\')" />';

在前端呈现为

<input type="button" class="btn btn-link btn-xs" value="Download JSON" onclick="downloadFileAutomatically('{" rohan":"sharma"}')"="">

最后的 )"="" 部分是随机错误的。

单击此按钮时,浏览器会抛出 Uncaught SyntaxError: Invalid or unexpected token,这是预期的行为。

我应该如何处理引号层次结构才能使其正常工作。

可能的解决方案

Using string interpolation and encoded JSON string

var dummy = { rohan: "sharma" };
var downButton =`<input type="button" value="Download" onclick="downloadFileAutomatically('${encodeURIComponent(JSON.stringify(dummy))}')"/>`;

或澄清

var dummy = { rohan: "sharma" };
var dummyEncoded = encodeURIComponent(JSON.stringify(dummy))
var downButton =`<input type="button" value="Download" onclick="downloadFileAutomatically('${dummyEncoded}')"/>`;

它转义 JSON 数据的单引号和双引号,因此可以将其放在引号内。使用 decodeURIComponent() 获取原始 JSON 字符串。

但是您也可以通过其他方式转义 JSON 字符串。

提示:您可以使用 event listeners 而不是 onclick 来减少代码和格式设置 error-prone.