我正在尝试执行以下操作,这似乎是一项简单的任务。在尝试各种方法2周后,我仍然在第4步失败:
我的方法(参见附件代码)是将JavaScript(我已制作成书签)写入:
以下是Javascript代码。我的问题是:为什么我的方法不是通过sessionStorage.setItem
保存原始文件内容,然后检索它以在最后一步恢复文档,不工作? (在此上下文中“不工作”意味着在运行脚本后查看文档时,“建议的更改”不会像原始文档中那样返回到“建议”)。
除了sessionStorage.setItem
方法之外,我还尝试了很多其他方法,包括将document.getElementsByClassName("*stuff*").innerHTML
,.outerHTML, .innerTEXT, .outerTEXT
存储在变量 inH,outH,inT,outT,分别在脚本的开头,然后将document.getElementsByClassName("*stuff*").innerHTML, outerHTML, innerTEXT, .outerTEXT
等同于 inH,outH ,resp。没工作。 (“ stuff ”是“docos-icon-accept-suggestion-checkmark”,btw)
我还尝试通过克隆document.getElementsByClassName("*stuff*")
来制作backupD = document.getElementsByClassName("*stuff*").cloneNode(true)
的“备份副本”:document.getElementsByClassName("*stuff*").replaceWith(backupD)
然后通过.getElementsByClassName("*stuff*")
进行恢复无法正常工作。
除了javascript:(function() {sessionStorage.setItem("backup",document.getElementsByClassName("docos-icon-accept-suggestion-checkmark")); var d = document.getElementsByClassName("docos-icon-accept-suggestion-checkmark"); d = Array.prototype.slice.call(d); var cnt = 0; d.forEach(function(n){ var e = document.createEvent("MouseEvents"); e.initEvent("click", true, false); n.dispatchEvent(e,true); e = document.createEvent("MouseEvents"); e.initEvent("mousedown", true, false); n.dispatchEvent(e,true); e = document.createEvent("MouseEvents"); e.initEvent("mouseup", true, false); n.dispatchEvent(e,true); cnt++; }); alert('JUST ACCEPTED ALL SUGGESTED EDITS: ' + cnt.toString()); document.getElementsByClassName("docos-icon-accept-suggestion-checkmark").replaceChild(sessionStorage.setItem("backup")); alert('JUST FINISHED RESTORING TO ORIGINAL FILE');}) ();
之外的其他东西是否可能存储在我用来恢复Gdoc之后?我正在使用上面的节点,因为它是用于全局接受建议的更改,这似乎是“撤消”该过程的相关事项。
说到“撤消”,我还尝试以编程方式“撤消”以恢复所有已接受的建议更改。我的代码知道需要引发“撤消”的次数(当我多次手动点击Gdocs菜单上的撤消箭头时,我会收回原始文档),但我找不到任何关于如何“撤消”按钮在Gdoc中实现,以及如何以编程方式“命中”撤消按钮。
最后,我想到的另一个替代方案(我的第一个想法是探索)是以某种方式以编程方式在Google云端硬盘上制作GDoc的副本(可能有很多指导要做到这一点),然后使用它复制为我的“临时副本”,用于接受所有建议的更改,以便我不必担心将原始内容还原到文件。但是存在的障碍是,当我启动这个javascript时,它会在我点击书签时打开的文件上运行,没有任何明显的方式打开,然后“接受所有建议的更改”复制的文件。
这是我的代码(无法将Gdoc恢复到其原始状态)。在做全局“接受所有建议的更改”之前,我应该采用什么方法来使我的Gdoc达到其原始状态的任何建议将非常感激:
{{1}}
一些可能有用/相关的链接:
答案 0 :(得分:0)
以下编写为bookmarklet的JavaScript实现了上述所有目标,以防此解决方案可以帮助其他人同样希望暂时“接受Google文档中的所有建议更改”,然后将文档还原为原始状态。如果您在执行本答案底部给出的Bookmarklet时显示了Google文档,则具体步骤及其完成方式如下。
以编程方式接受所有建议的更改。 (来自http://www.tcg.com/blog/accept-all-bookmark-for-google-docs-suggestions/的算法):
var d=document.getElementsByClassName("docos-accept-suggestion"); d = Array.prototype.slice.call(d); d.forEach(function(n){ var e = document.createEvent("MouseEvents"); e.initEvent("click", true, false); n.dispatchEvent(e,true); e = document.createEvent("MouseEvents"); e.initEvent("mousedown", true, false); n.dispatchEvent(e,true); e = document.createEvent("MouseEvents"); e.initEvent("mouseup", true, false); n.dispatchEvent(e,true); });
以编程方式导出纯文本(现在应该包含建议的更改):
window.open(window.location.href.replace("edit","export\?format=txt"));
使用Google Doc和/或导出的纯文本文件(例如,我的文件有原始LaTeX,所以我编译了文件并得到了我的研究论文的pdf)。
将Doc切换回原来的pre-accept_all_suggested_changes状态。
w=window.open(window.location.href.replace("edit","copy"));w.addEventListener('load',w.close(),true);alert('Check your download folder for the text file');setTimeout(function(){var a=document.getElementsByClassName("docs-icon-undo")[0]; for(var j=0; j<cnt; j++){e=document.createEvent("MouseEvents"); e.initEvent("click",true,false);a.dispatchEvent(e,true);e=document.createEvent("MouseEvents");e.initEvent("mousedown",true,false); a.dispatchEvent(e,true);e=document.createEvent("MouseEvents");e.initEvent("mouseup",true,false);a.dispatchEvent(e,true)}}
(其中cnt
是上一步中接受的建议更改数量。代码为您计算cnt
的值。)
完全,功能小书签如下所示(其中“[DO STUFF]
”是您放置所需代码的地方,其中包含使用Google Doc或纯文本文件的所有建议更改):
javascript:(function(){var d=document.getElementsByClassName("docos-accept-suggestion"); d = Array.prototype.slice.call(d); d.forEach(function(n){ var e = document.createEvent("MouseEvents"); e.initEvent("click", true, false); n.dispatchEvent(e,true); e = document.createEvent("MouseEvents"); e.initEvent("mousedown", true, false); n.dispatchEvent(e,true); e = document.createEvent("MouseEvents"); e.initEvent("mouseup", true, false); n.dispatchEvent(e,true); });window.open(window.location.href.replace("edit","export\?format=txt")); [*DO STUFF*]; w=window.open(window.location.href.replace("edit","copy"));w.addEventListener('load',w.close(),true);alert('Check your download folder for the text file');setTimeout(function(){var a=document.getElementsByClassName("docs-icon-undo")[0];for(var j=0; j<cnt; j++){e=document.createEvent("MouseEvents"); e.initEvent("click",true,false);a.dispatchEvent(e,true);e=document.createEvent("MouseEvents");e.initEvent("mousedown",true,false); a.dispatchEvent(e,true);e=document.createEvent("MouseEvents");e.initEvent("mouseup",true,false);a.dispatchEvent(e,true)}},5000);})();
该代码已在Chrome浏览器上测试过。
答案 1 :(得分:0)
Google 文档(在 Chrome 中)现在有一个工具可以预览文档并应用所有建议的编辑:
Tools
--> Review suggested edits
--> Preview "accept all"
虽然导出文档不反映预览,但可以打印和复制粘贴文档并应用建议的编辑,以便获得应用建议编辑的纯文本或 pdf 版本的文档。