2016-07-28 1 views
0

私は以下のことを試みていますが、これは簡単な作業です。プログラム的として提案されたすべての変更、 プログラムで一時的にGoogleドキュメントを変更してから変更したバージョンに置き換えてください

  • してからエクスポートファイルを受け入れる
  • 、既存のGoogleドキュメント(GDOC)ファイルを皮切り

    1. :様々なアプローチを試みての2週間後、私はまだステップ4で失敗していますその後、テキストファイル(このステップはすぐに行く)、
    2. と、そのファイルが、それは私のアプローチステップ1で

    を開始する方法と同じですので、一時的な変更を元に戻すには、(添付のコードを参照)を書くことでしたJavaScript(w )私はブックマークレットに行ったHICH:http://www.tcg.com/blog/accept-all-bookmark-for-google-docs-suggestions/

    1. その後ところで提案された変更(ここではリアルライフセーバーを、受け入れる、
    2. を元GDOC(ステップ1でバージョン)の内容を保存します
    3. ファイルをプレーンテキストとしてローカルにエクスポートします(推奨される変更をグローバルに受け入れると、それらの編集内容をテキストに組み込むことができます)。
    4. 保存したバージョンに文書を復元します。

    以下のJavascriptコードが続きます。私の質問は、なぜオリジナルファイルの内容をsessionStorage.setItemで保存し、最後の手順でドキュメントを復元するためにそれを取得しても動作しないのですか? (この文脈で「機能していない」とは、スクリプトを実行した後にドキュメントを表示するときに、「提案された変更」は元のドキュメントのように「提案」として表示されないことを意味します)。 sessionStorage.setItemアプローチに加えて

    は、私は、スクリプトの先頭に、それぞれの変数でdocument.getElementsByClassName("*stuff*").innerHTML.outerHTML, .innerTEXT, .outerTEXTINH、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)。
    +0

    あなたはsessionStorageについてこれを見ましたか? http://stackoverflow.com/questions/13292744/why-isnt-localstorage-persisting-in-chrome – larrylampco

    +0

    なぜあなたはこれをしますか? – Lemonade

    +0

    ありがとうLarry - そのリンクは私には見られたように見えますが、私は実際に解決策を理解していませんでした( "それを維持するためにキーの読み取りを試みる必要があります)"。また、他のどのメソッドも(DOMサブツリーを後で復元されるパラメータにDOMサブツリーを保存して復元ポイントとして使用するためにクローンを作成して)機能していないという事実は、私がおそらくウサギの穴。言い換えれば、提案された変更に対するグローバルな受け入れは、おそらくこのDOMサブツリーを復元するだけでは "完了していない"というわけではありません。しかし、提案にもう一度感謝します! – PMM

    答えて

    0

    このソリューションは、同様に一時的にGoogleドキュメントの「提案されたすべての変更を承認」した後、元に戻したい他人を助けるかもしれない場合にはブックマークレットとして書かれた次のJavaScriptは、上記目的の全てを実現文書を元の状態に戻します。この回答の最後にあるブックマークレットを実行した時点で、Googleドキュメントを表示している場合、具体的な手順とその実行方法は次のとおりです。

    1. 提案されたすべての変更をプログラムで受け入れます。 (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); }); 
      
    2. プログラムでエクスポートプレーンテキスト(現在提案された変更が組み込まれなければならない):

      window.open(window.location.href.replace("edit","export\?format=txt")); 
      
    3. および/またはエクスポートプレーンテキストをGoogleドキュメントとのものを行いますファイル(たとえば、私のファイルには生のLaTeXがあるので、ファイルをコンパイルし、私の研究論文のpdfを入手しました)。

    4. スイッチを元の、前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)}} 
      
    5. 要するに

    cntが前のステップで受け付けられた提案された変更の数である。あなたのためcntの値アウトコードの数字。)


    、機能ブックマークレットは次のようになります(「[DO STUFF]」は、Googleドキュメントまたはプレーンテキストファイルを利用するコードを入力します)。

    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ブラウザでテストされています。

    関連する問題