以编程方式删除脚本

时间:2019-02-28 17:54:06

标签: google-apps-script google-sheets

我想知道是否有人可以给我一些建议。

我有一个主电子表格,用作模板。我写了一个脚本,可以从菜单中运行(使用addToUi命令),该脚本可以复制模板电子表格。

问题在于脚本也被复制到了新的电子表格中,这也是我所不希望的。

有人可以建议解决此问题的方法吗?

我确实认为可能的方法是获取脚本以打开复制的模板并删除脚本,但不确定是否可行。

任何帮助都将不胜感激。

这是执行复制的功能。...

function createCopy() {

var myValue = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().getRange("B8").getValue();

var destinationFolder = DriveApp.getFolderById("xxxxxxxxxxxxxxxx");

  DriveApp.getFileById(SpreadsheetApp.getActiveSpreadsheet().getId()).makeCopy(myValue,destinationFolder);

}

(单元格引用B8保留了我称为复制电子表格的值)。

1 个答案:

答案 0 :(得分:0)

Rayden,我使用类似的功能将一张纸复制到一个新的电子表格中,并且不会拖拽脚本。 gDrive是电子表格的ID,tabName是要复制的单个工作表,Filename是副本的名称,目标是目标目录。

//******************************************************************************
//- This function takes a tab and makes it its own file
function tabToSheet(gDrive,tabName,fileName,destination){
var sh = SpreadsheetApp.openById(gDrive);
var ss = sh.getSheetByName(tabName);

//create a new document in the location given
var newSheet = SpreadsheetApp.create("TEMPDELETEME");

//copy the tab from current document to new document 
ss.copyTo(newSheet);
var id = newSheet.getId();

newSheet.deleteSheet(newSheet.getSheetByName("Sheet1"));
os = newSheet.getSheets()[0];
  os.setName(tabName);

var file = DriveApp.getFileById(id);
var folder = DriveApp.getFolderById(destination);


var finalId = file.makeCopy(fileName, folder).getId();
file.setTrashed(true);

return finalId;

}//*****************************************************************************

区别在于,我正在制作一张新纸,然后复制选项卡而不是复制整个文件。如果要复制多个标签,可以添加另一个标签并删除变量。