我想拥有一个按钮,当我使用Google脚本按下它时,它可以还原特定版本的Google工作表。
原因是我想清除自己的Google工作表,但要设置与原始版本相同的格式和所有内容,以防其他人更改单元格的格式。
尽管我可以添加一个按钮,然后在某些输入任何数据之前将版本恢复为原始版本。
关于如何使用脚本执行此操作的任何想法? (我愿意接受建议)
谢谢!
答案 0 :(得分:0)
我认为您无法使用Google脚本还原版本,因为运行脚本的过程仍然会更新当前版本。
您可以编写一个脚本,清除所有可编辑的单元格(并将所有格式设置为默认格式),然后将其添加到自定义菜单,以便您可以通过按一下按钮来重置工作表。
这可能会达到您想要的结果。
这是我以前使用过的,但显然是针对我的需求的。
function clear() {
SpreadsheetApp.getActiveSpreadsheet().toast('Deleting');
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getActiveSheet();
var range = sheet.getDataRange();
range.clear();
sheet.getRange(1,1).setValue('Copy and paste Data here')
.setBackground('yellow');
var maxRows = sheet.getMaxRows();
var maxColumns = sheet.getMaxColumns();
sheet.setFrozenRows(0);
sheet.deleteColumns(2,maxColumns-1);
sheet.deleteRows(2,maxRows-1);
sheet.setColumnWidth(1, 100)
SpreadsheetApp.getActiveSpreadsheet().toast('Deleted');
}
function onOpen() {
SpreadsheetApp.getUi()
.createMenu('Custom Menu')
.addItem('Clear','clear')
.addToUi();
}
更具体的示例可能是:
function clear() {
SpreadsheetApp.getActiveSpreadsheet().toast('Deleting');
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getActiveSheet();
sheet.getRange('A26:E30').clearContent();
sheet.getRange('A33:E37').clearContent();
sheet.getRange('A40:E44').clearContent();
sheet.getRange('D2:D3').clearContent();
sheet.getRange('D5:D9').clearContent();
sheet.getRange('D12:D16').clearContent();
sheet.getRange('D18').clearContent();
sheet.getRange('A19').setValue(false);
sheet.getRange('C19').setValue(false);
}
我可能已经错过了一些章节,因此您需要适应您的用法。如果要使用已创建的清除按钮,则可以右键单击它并为其分配清除功能,这样,每次单击清除时,它将执行上述脚本。这可能不是最优雅的解决方案,但它可以满足您的需求。
答案 1 :(得分:0)
我的解决方法是从另一张纸上复制粘贴:
function Restore() {
var destination = SpreadsheetApp.openById('detination sheet id');
var destSheet = destination.getSheetByName('Sheet1');
var source = SpreadsheetApp.openById('source sheet id');
var sourceSheet = source.getSheetByName('Sheet1');
destSheet.clearContents();
if(destSheet.getMaxRows()>sourceSheet.getMaxRows())
{
destSheet.deleteRows(sourceSheet.getMaxRows(), (destSheet.getMaxRows() - sourceSheet.getMaxRows()));
}
if(destSheet.getMaxColumns()>sourceSheet.getMaxColumns())
{
destSheet.deleteColumns(sourceSheet.getMaxColumns(), (destSheet.getMaxColumns() - sourceSheet.getMaxColumns()));
}
var copySheet = sourceSheet.copyTo(destination);
copySheet.getDataRange().copyTo(destSheet.getDataRange());
destination.deleteSheet(copySheet);
}