Google Script帮助:将没有源链接的数据透视表复制到新工作表

时间:2017-06-23 10:41:02

标签: google-apps-script google-sheets google-sheets-api

任何帮助都将不胜感激!

目前我有一张“最新记分卡”,其中包含3个数据透视表,每周更新一次。

我想编写一个脚本,它将复制“最新记分卡”选项卡,仅粘贴值和格式(例如条件格式)并将选项卡重命名为当前日期。我们的想法是,每周刷新一次“最新记分卡”标签,我们可以在前几周的数据中找到备份表。

我到目前为止所获得的脚本能够制作克隆并将复制的工作表重命名为当前日期,(但它包括“来源”的链接)。有人可以建议如何编辑脚本,以便只粘贴值和格式而不是整个数据透视表源链接。

这是我的脚本

/*create scorecard clone*/
function cloneGoogleSheet() {

var ss = SpreadsheetApp.getActiveSpreadsheet();

var tz = ss.getSpreadsheetTimeZone();

var newDate= new Date();

var sheet = ss.getSheetByName('Latest Scorecard').copyTo(ss); 

var stringDate = Utilities.formatDate(newDate, tz, 'MM-dd-yy');

/* Make the new sheet active and rename to current date*/

ss.setActiveSheet(sheet).showSheet();

ss.renameActiveSheet(stringDate);

ss.moveActiveSheet(6);

}

非常感谢你!

1 个答案:

答案 0 :(得分:0)

我解决了,谢谢你。我发布了在这里工作的脚本。

function cloneGoogleSheet() {

var ss = SpreadsheetApp.getActiveSpreadsheet();
var tz = ss.getSpreadsheetTimeZone();
var date = new Date();
var sheet = ss.getSheetByName('Latest Scorecard').getDataRange();
var newsheet = ss.insertSheet('New Sheet');
var stringDate = Utilities.formatDate(date , tz, 'MM-dd-yy');

/*copy the scorecard pivot table to a newsheet and make it static without copying the pivot table source*/  
sheet.copyTo(newsheet.getRange('A1'), {contentsOnly:true}); /*copy only content over to newsheet first*/
var newsheet_id = newsheet.getDataRange().getGridId();
sheet.copyFormatToRange(newsheet_id, 1, 26, 1, 30); /*then copy the format over to newsheet to break the source link*/

/* Make the new sheet active and rename to current date*/
ss.setActiveSheet(newsheet).showSheet(); 
ss.renameActiveSheet(stringDate);
ss.moveActiveSheet(6);
}