仅数字Google表格自动备份

问题描述 投票:-1回答:2

我正在寻找一种自动备份Google表格文件的方法,该方法不包含功能,仅包含数字。

我从各种渠道搜集了2个脚本:

// Abhijeet Chopra
// 26 February 2016
// Google Apps Script to make copies of Google Sheet in specified destination folder

function makeCopy() {

// generates the timestamp and stores in variable formattedDate as year-month-date hour-minute-second
var formattedDate = Utilities.formatDate(new Date(), "GMT", "yyyy-MM-dd' 'HH:mm:ss");

// gets the name of the original file and appends the word "copy" followed by the timestamp stored in formattedDate
var name = SpreadsheetApp.getActiveSpreadsheet().getName() + " Copy " + formattedDate;

// gets the destination folder by their ID. REPLACE xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx with your folder's ID that you can get by opening the folder in Google Drive and checking the URL in the browser's address bar
var destination = DriveApp.getFolderById("1ysgERhjmrnq5Uzb9Lu7CtqOWccVTHyVj");

// gets the current Google Sheet file
var file = DriveApp.getFileById(SpreadsheetApp.getActiveSpreadsheet().getId())

// makes copy of "file" with "name" at the "destination"
file.makeCopy(name, destination);
}

另一个是:

function getRangeValues() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var range = sheet.getRange("A2:B4");
  var values = range.getValues();
  return values;
};

来自多个工作表文件的数据被拉入一个主文件,我想每个星期备份一次,但是问题在于'makeCopy'函数将要拉入主文件副本的数据即将到来从原始工作表开始,因为我正在使用importrange函数,该函数需要唯一的工作表ID,并且副本具有另一个ID。如何将这两个结合在一起?

google-apps-script google-sheets backup
2个回答
0
投票
function makeCopy() {
  var folder=DriveApp.getFolderById("Folder Id");
  var formattedDate = Utilities.formatDate(new Date(), "GMT", "yyyy.MM.dd");
  var ss=SpreadsheetApp.getActive();
  var fileName = formattedDate + " " + ss.getName();
  var file=DriveApp.getFileById(ss.getId());
  var f=file.makeCopy(fileName,folder);
  var copy=SpreadsheetApp.openById(file.getId());
  var shts=copy.getSheets();
  shts.forEach(function(sh){
    var rg=sh.getDataRange();
    var dvA=rg.getDisplayValues();
    sh.clearContents();
    rg.setValues(dvA);
  });
}

这是我可以混合在一起的内容,它会删除原始文件中的引用,而不是复制的版本。我确定这是方法,只需要在此处和此处进行一些微调即可。

您能给我一些提示吗?

感谢您的帮助!!!!


0
投票

尝试一下:

function makeCopy() {
  var folder=DriveApp.getFolderById("1y66aE2WuaRQQM5fyevXEl5uhJamk9VF7");
  var ss=SpreadsheetApp.getActive();
  var file=DriveApp.getFileById(ss.getId());
  var f=file.makeCopy(folder);
  var copy=SpreadsheetApp.openById(f.getId());
  var shts=copy.getSheets();
  SpreadsheetApp.getUi().alert('Go to other sheet to authorize Import. Hit Okay after authorizing the Import');
  shts.forEach(function(sh){
    var rg=sh.getDataRange();
    var dvA=rg.getValues();
    sh.clearContents();
    rg.setValues(dvA);
  });
}

我认为问题是我们需要在另一张纸上授权进口。尝试一下。查看它是否适用于您的电子表格。

© www.soinside.com 2019 - 2024. All rights reserved.