我有一個功能,可以從一張紙上讀取筆記,並在編輯時將它們寫入另一張紙上的單元格中。但是,每當我這樣做時,它會將所有這些寫入添加到撤消堆棧。這意味着只要用戶進行編輯,就不能再使用撤銷功能,因爲撤消堆棧已經充滿了腳本所做的編輯。我可以從Google Apps腳本中的撤消堆棧中排除操作嗎?
有沒有辦法排除腳本在撤消堆棧中執行的寫入功能?我很欣賞這可能是不可能的,但如果我不能這樣做,我將不得不每小時使用一次計時器,這意味着一切都將過去一個小時。
乾杯,
邁克
我有一個功能,可以從一張紙上讀取筆記,並在編輯時將它們寫入另一張紙上的單元格中。但是,每當我這樣做時,它會將所有這些寫入添加到撤消堆棧。這意味着只要用戶進行編輯,就不能再使用撤銷功能,因爲撤消堆棧已經充滿了腳本所做的編輯。我可以從Google Apps腳本中的撤消堆棧中排除操作嗎?
有沒有辦法排除腳本在撤消堆棧中執行的寫入功能?我很欣賞這可能是不可能的,但如果我不能這樣做,我將不得不每小時使用一次計時器,這意味着一切都將過去一個小時。
乾杯,
邁克
可悲的是,腳本的操作等同於你寫在自己的單元格的東西。編輯堆棧在Sheet側進行跟蹤,編輯由運行腳本的用戶進行。
您唯一的希望是將其作爲與打開電子表格的用戶不同的用戶來運行,但考慮到onEdit()
觸發器的性質,這可能是不可能的。查看觸發器documentation。
我建議這樣做的原因是表單跟蹤每個用戶單獨編輯。然而,即使這不是一個完美的解決方案,因爲如果我們都編輯完全相同的單元格,撤消操作仍會改變您的編輯內容。 E.G如果我將A
寫入空單元格中,然後將B
寫入同一單元格中,其中一個我點擊撤消,它將再次成爲空單元格。
感謝您的簡潔分析...我擔心這可能是這種情況...我可能不得不看看我是否可以修改我的腳本,以便它可以像更新所有單元格一樣(可能是「粘貼」一個組的細胞在一個去)這將離開我在撤銷按鈕上的2輕拍種靈魂...... – user1766513
不僅要緩解這個問題,你應該總是希望儘可能多地輸出數據。始終嘗試通過先創建一個數據數組來使用'.setValues()'而不是多個'.setValue()'行 – Vytautas
不確定你正在嘗試做什麼。我可以看到撤消堆棧中的編輯與數據過期之間沒有關聯,除非有人繼續主動撤銷所有內容。 – Vytautas
我低調這個問題,因爲它沒有顯示任何研究工作。 –
感謝魯本,但我一直在調查,並找不到任何地方在谷歌應用程序腳本幫助頁面或論壇上的答案 - 因此這篇文章。你有更好的研究途徑嗎? 對不起@Vytaustas - 最後一句話令人困惑。目前,我的函數在OnEdit(e)方法中運行,這意味着每次對電子表格進行編輯時它都會運行。不幸的是,這會將對錶單所做的腳本更改放入撤消堆棧,而不是用戶編輯爲堆棧中的最後一個,這將允許用戶撤消其最後一個操作。我將編輯我的帖子。 – user1766513