2016-10-12 5 views
-1

私はあるシートからノートを読み取り、編集が行われるたびに別のシートのセルに書き込む機能を持っています。しかし、私がこれを行うたびに、すべての書き込みを元に戻すスタックに追加します。これは、ユーザが編集したときはいつでも、アンドゥスタックがスクリプトの編集内容でいっぱいであるため、アンドゥ機能を使用できなくなることを意味します。Google Apps Scriptの元に戻すスタックから操作を除外できますか?

スクリプトが実行する書き込み関数を元に戻すスタックから除外する方法はありますか?私はこれが可能ではないかもしれないことを感謝します。しかし、私がそれを行うことができないなら、私はタイマーを使用して1時間ごとの実行を行う必要があり、これはすべてが時代遅れになってしまうことを意味します。

乾杯、

+0

あなたが何をしようとしているのかわかりません。誰かが積極的にすべてを元に戻さない限り、元に戻すスタック内の編集とデータの期限が切れていることの間に相関がないことがわかります。 – Vytautas

+0

私は研究の努力を示していないので、この質問をd​​ownvotingしています。 –

+0

ルーベンに感謝しますが、私はそれを調べていて、Googleアプリケーションスクリプトのヘルプページやフォーラムのどこにでも答えを見つけることができませんでした。研究する道はありますか? 申し訳ありません@ Vytaustas - 最後の文が混乱していました。現時点では、私の関数はOnEdit(e)メソッドで実行されます。つまり、スプレッドシートを編集するたびに実行されます。残念ながら、これはスタック編集の最後のものではなく、シートに加えられたスクリプトの変更を取り消しスタックに置きます。これにより、ユーザは最後の取り消しを元に戻すことができます。私は自分の投稿を編集します。 – user1766513

答えて

0

悲しいことに、スクリプトが行う操作は、あなたがセル自身で何かを書くことと等価である

マイク。編集スタックはシート側で追跡され、編集はスクリプトを実行しているユーザーによって行われます。

唯一の希望は、スプレッドシートを開いたユーザーとは別のユーザーとして実行することですが、onEdit()のトリガーの性質を考慮すると、可能でない可能性があります。トリガーdocumentationを参照してください。

これは、シートが各ユーザーの編集内容を別々に追跡するためです。しかし、これは完璧な解決策ではありませんが、まったく同じセルを編集する場合と同じように、私の取り消しはあなたの編集内容を変更します。 E.G Aを空のセルに書き込んで、同じセルにBと書きます.1つは元に戻します。空のセルになります。

+0

あなたの簡潔な分析をお寄せいただきありがとうございます...私はこれが事実かもしれないと恐れていました...私は私のスクリプトを嫌うかもしれないので、同時にすべてのセルを更新するようなことをしなければならないかもしれません。(おそらく、 )2つのタップの種類のソウルティションをアンドゥボタンに残すことになります... – user1766513

+0

この問題を緩和するだけでなく、できるだけ多くのデータを常に出力することを検討する必要があります。複数の '.setValue()'の代わりに常に '.setValues()'を使用してみましょう。 – Vytautas

関連する問題