Программно удалить скрипт - PullRequest
0 голосов
/ 28 февраля 2019

Мне было интересно, может ли кто-нибудь дать мне какой-нибудь совет.

У меня есть главная электронная таблица, выступающая в качестве шаблона.Я написал скрипт, который можно запустить из меню (с помощью команды 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 голосов
/ 01 марта 2019

Рэйден, я использую такую ​​функцию, чтобы просто скопировать один лист в новую электронную таблицу, и он не тянет за собой скрипт.gDrive - это идентификатор электронной таблицы, 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;

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

Разница в том, что я создаю новый лист, затемкопирование вкладки, а не копирование всего файла.Вы можете добавить еще одну вкладку и удалить переменные, если хотите скопировать несколько вкладок.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...