Javascript 如何保持持久服务器端数据可用于Google Drive侧边栏?

Javascript 如何保持持久服务器端数据可用于Google Drive侧边栏?,javascript,google-apps-script,Javascript,Google Apps Script,我想从它创建的侧栏HTML文档中访问我的Google Apps脚本代码的持久服务器端实例中的对象 我在GAS方面相当有经验,但在web设计方面经验要少得多。我的总体目标是创建一个交互式侧栏,它代表Google文档的内部结构 现在,它显示了文档运行时的结构,但我想实现一些功能,比如高亮显示或单击侧栏中的元素以高亮显示Google文档中的相应元素,或者反之亦然 我想通过访问HTML元素的ID和代表GoogleDoc元素的GAS对象之间的对应关系来实现这一点。当脚本第一次运行时构造这种对应关系很容易,

我想从它创建的侧栏HTML文档中访问我的Google Apps脚本代码的持久服务器端实例中的对象

我在GAS方面相当有经验,但在web设计方面经验要少得多。我的总体目标是创建一个交互式侧栏,它代表Google文档的内部结构

现在,它显示了文档运行时的结构,但我想实现一些功能,比如高亮显示或单击侧栏中的元素以高亮显示Google文档中的相应元素,或者反之亦然

我想通过访问HTML元素的ID和代表GoogleDoc元素的GAS对象之间的对应关系来实现这一点。当脚本第一次运行时构造这种对应关系很容易,但我不知道如何保持它,以便HTML代码能够访问它

我知道可以从HTML调用GAS函数,但它们不会存在于同一个执行实例中,因此它们无法访问通信

我知道您可以使用模板将数据传递给HTML文档,但这需要序列化
Document
对象或
ParagraphElement
对象,或者任何我希望避免处理的对象(如果可能)。我还希望这些对象保持与实际Google文档的连接,据我所知,它们不会

我知道您可以访问缓存和/或文档属性,但这两者都涉及序列化
document
对象

我知道您可以使用触发器调用GAS函数,例如,在编辑文档时,然后访问文档的UI,但是(同样,据我所知),每当编辑文档时,这将需要重写整个侧栏HTML,我认为这会使它看起来很烦人


我该怎么做呢?我的假设有错吗?有这样的好例子吗?

我做过类似的事情。我希望跟踪文档的各个部分,并能够从侧边栏更改它们的格式。即使文档发生了更改,我也希望它能够正常工作

我的解决方案是在文档中要突出显示的部分周围嵌入零宽度(非打印)unicode字符。然后,我可以使用模式搜索来查找我感兴趣的片段,并更改字体、格式等

我使用的字符是:

var ZERO_WIDTH_SPACE = '\u200B';
var ZERO_WIDTH_NON_JOINER = '\u200C';
var ZERO_WIDTH_JOINER = '\u200D';
var ZERO_WIDTH_NBSP = '\uFEFF';

我认为您无法序列化文档对象。谷歌文档没有编辑触发器。依我看,你要找的是困难的,如果不是不可能的话。谢谢你的评论。我想很高兴听到我没有无缘无故地与此抗争。哈哈,我实际上已经在用这些角色来做其他事情了。我想谷歌文档中应该包含的功能的黑客解决方案万岁。不幸的是,它们在这里无法工作,因为我需要手动编辑文档。