私は以下のことを試みていますが、これは簡単な作業です。プログラム的として提案されたすべての変更、 プログラムで一時的にGoogleドキュメントを変更してから変更したバージョンに置き換えてください
- :様々なアプローチを試みての2週間後、私はまだステップ4で失敗していますその後、テキストファイル(このステップはすぐに行く)、
- と、そのファイルが、それは私のアプローチステップ1で
を開始する方法と同じですので、一時的な変更を元に戻すには、(添付のコードを参照)を書くことでしたJavaScript(w )私はブックマークレットに行ったHICH:http://www.tcg.com/blog/accept-all-bookmark-for-google-docs-suggestions/)
- その後ところで提案された変更(ここではリアルライフセーバーを、受け入れる、
- を元GDOC(ステップ1でバージョン)の内容を保存します
- ファイルをプレーンテキストとしてローカルにエクスポートします(推奨される変更をグローバルに受け入れると、それらの編集内容をテキストに組み込むことができます)。
- 保存したバージョンに文書を復元します。
以下の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、うまくいきませんでした。 (ところで「もの」である 『ドコサ-アイコン-受け入れる-提案-チェックマーク』、)
は、私もそれをクローニングすることにより、document.getElementsByClassName("*stuff*")
の 『バックアップコピー』を作ってみた:backupD = document.getElementsByClassName("*stuff*").cloneNode(true)
はその後document.getElementsByClassName("*stuff*").replaceWith(backupD)
なかったので復元します」いずれかの仕事。
.getElementsByClassName("*stuff*")
以外のものは、Gdocを復元するために使用する必要がありますか?私は上記のノードを使用しています。これは、提案された変更をグローバルに受け入れるために使用されるもので、プロセスを元に戻すのに関連するようです。
「元に戻す」と言えば、私はまた、受け入れられた提案された変更のすべてを復元するためにプログラムで「取り消し」しようとしました。私のコードは、 "元に戻す"を呼び出す必要がある回数を知っています(そして、GdocsメニューのUndo矢印を何回も手動でクリックすると元の文書に戻ります)。しかし、 "元に戻す"ボタンはGdocで実装されており、プログラムで "元に戻す"ボタンを "ヒット"する方法を説明します。
最後に、私が考えたもう1つの選択肢は、GoogleドライブのGDocのコピーを何らかの形でプログラムで作成することでした(これを行うためのガイダンスが多々あります)。そのコピーを私の "スクラッチコピー"として提案したすべての変更を受け入れることで、元のコンテンツをファイルに復元する心配がなくなりました。しかし、ハードルは私が火アップ時にこのJavaScriptを、それが開いた後、コピーしたファイルの「提案されたすべての変更を受け入れる」にする任意の明白な方法なしで、私はブックマークレットをクリックした際に開かれたファイル上で動作することがあります。
は、ここで(元の状態にGDOCを復元するために失敗した)私のコードです。私はそれが「提案されたすべての変更を受け入れ、」グローバルを行う前にあった元の状態に私のGDOCを取得するために使用すべきかのアプローチについて何かアドバイスは非常に高く評価されるだろう:
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');})();
いくつかの可能性が便利/関連リンク:
- scripting a google docs form submissionは(、Javascriptが開かれ、「永久」ファイルから実行しているかの問題を抱えているクローン化された文書を開くことができます - スクリプトは、おそらくしかし、問題なくドキュメントをコピーしてアップロードできます) 。
- Programmatically edit a Google doc with JavaScript(私の質問にはかなり関係していますが、Google Apps ScriptなしでGdocコンテンツを変更することはできないとの回答がありました。 "提案された変更を受け入れる"ことができ、 。私は現在JavaScriptで持っているように私はGoogle Appsの時の私の試みと同じ問題を抱えていた:私は、開いているドキュメントやプログラムから他の文書を開いて操作することができませんでしに結び付けられています。また、私は、スクリプトを実行するためのGoogle Appsを取得できませんでした。すべての提案を受け入れます)。
- How to clone (and restore) a DOM subtree(私は私のプロジェクトのために別の行き止まりであることが証明さ.cloneNodeを、使用してのアイデアを得、そこからの参照の1)。
あなたはsessionStorageについてこれを見ましたか? http://stackoverflow.com/questions/13292744/why-isnt-localstorage-persisting-in-chrome – larrylampco
なぜあなたはこれをしますか? – Lemonade
ありがとうLarry - そのリンクは私には見られたように見えますが、私は実際に解決策を理解していませんでした( "それを維持するためにキーの読み取りを試みる必要があります)"。また、他のどのメソッドも(DOMサブツリーを後で復元されるパラメータにDOMサブツリーを保存して復元ポイントとして使用するためにクローンを作成して)機能していないという事実は、私がおそらくウサギの穴。言い換えれば、提案された変更に対するグローバルな受け入れは、おそらくこのDOMサブツリーを復元するだけでは "完了していない"というわけではありません。しかし、提案にもう一度感謝します! – PMM