gpt4 book ai didi

google-apps-script - 有没有办法撤销谷歌应用程序脚本所做的更改?

转载 作者:行者123 更新时间:2023-12-04 23:11:10 27 4
gpt4 key购买 nike

所以我想知道如何将谷歌应用程序脚本所做的更改更改为可逆的文档。
特别是我正在编写一个脚本,该脚本将自定义样式应用于 Google Docs 文档中的选定元素。这不是一件难事。问题是脚本所做的更改不会反射(reflect)在文档的历史记录中,因此无法撤消。据我所知,也没有可逆编辑 session 的概念。

那么有没有办法撤消脚本所做的更改?

function onOpen() {
DocumentApp.getUi()
.createMenu('Extras')
.addItem('Apply code style', 'applyCodeStyle')
.addToUi();
}

function applyCodeStyle() {
var selection = DocumentApp.getActiveDocument().getSelection();
if (selection) {
var elements = selection.getSelectedElements();
for (var i = 0; i < elements.length; i++) {
var element = elements[i];

// Only modify elements that can be edited as text; skip images and other non-text elements.
if (element.getElement().editAsText) {
var text = element.getElement().editAsText();

// Bold the selected part of the element, or the full element if it's completely selected.
if (element.isPartial()) {
text.setBold(element.getStartOffset(), element.getEndOffsetInclusive(), true);
} else {
text.setBold(true);
}
}
}
}
}

最佳答案

我能想象的最接近的是,当您修改文件时,每 5 分钟左右在特定文件夹中创建文件的备份副本,以便您至少拥有此文档版本的副本。不理想,但它有效......

这是一段代码,从您的代码开始,我刚刚添加了计时器/复制内容,您可以通过更改文件夹 ID 来尝试。

编辑:为第一次执行添加了一个 try/catch,没有错误。

function applyCodeStyle() {
var selection = DocumentApp.getActiveDocument().getSelection();
try{
var x = new Date().getTime()/60000-new Date(Utilities.jsonParse(ScriptProperties.getProperty('lastBKP'))).getTime()/60000 ;
}catch(e){
ScriptProperties.setProperty('lastBKP', Utilities.jsonStringify(new Date()));
var x = 0
}
Logger.log(x+' minutes')
if (selection) {
if(x > 5){
var docId = DocumentApp.getActiveDocument().getId();
DriveApp.getFileById(docId).makeCopy(DriveApp.getFolderById('0B3qSFd3iikE3NWd5TmRZdjdmMEk')).setName('backup_of_'+DocumentApp.getActiveDocument().getName()+'_on_'+Utilities.formatDate(new Date(),'GMT','yyyy-MMM-dd-HH-mm'));
Logger.log("file copied because new Date().getTime()/3600-new Date(Utilities.jsonParse(ScriptProperties.getProperty('lastBKP'))).getTime()/3600 ="+x);
ScriptProperties.setProperty('lastBKP', Utilities.jsonStringify(new Date()));
}
var elements = selection.getSelectedElements();
for (var i = 0; i < elements.length; i++) {
var element = elements[i];
if (element.getElement().editAsText) {
var text = element.getElement().editAsText();
if (element.isPartial()) {
text.setBold(element.getStartOffset(), element.getEndOffsetInclusive(), true);
} else {
text.setBold(true);
}
}
}
}
}

关于google-apps-script - 有没有办法撤销谷歌应用程序脚本所做的更改?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19778707/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com