Итак, у меня есть скрипт, который я собрал вместе от разных авторов, который предназначен для получения значений из формул, их закрепления в виде жестких значений в ячейке и копирования электронной таблицы в новое место со всеми удаленными формулами из обозначенных ячеек. (и только сохраненные значения).
Вот это ниже:
function onOpen() {
var ui = SpreadsheetApp.getUi();
// Or DocumentApp or FormApp.
ui.createMenu('Master Menu')
.addItem('Archive Report', 'Archiver')
.addToUi();
}
function Archiver() {
var spreadsheetId = "File_ID"; // Please set the source Spreadsheet ID.
var destFolderId = "Folder_ID"; // Please set the destination folder ID.
// Copy all the spreadsheet (formulas included)
var ss = SpreadsheetApp.openById(spreadsheetId);
var destination = ss.copy(ss.getName() + " - " + new Date().toLocaleString());
var backgroundColor = "#00ff00"; // The background color you want to check for
destination.getSheets().forEach(function(sheet) { // Iterating through each sheet in the destination
var backgrounds = sheet.getDataRange().getBackgrounds(); // Getting 2-dimensional array with background colors for each cell in the sheet
for (var i = 0; i < backgrounds.length; i++) { // Iterating through each row
var rowBackgrounds = backgrounds[i];
for (var j = 0; j < rowBackgrounds.length; j++) { // Iterating through each cell for that specific row
var cellBackground = rowBackgrounds[j];
if (cellBackground === backgroundColor){ // Checking if the cell background color is the same as the specified one
var cell = sheet.getRange(i + 1, j + 1);
cell.copyTo(cell, {contentsOnly: true}); // Removing formulas from the cell
}
}
}
});
// Move file to the destination folder.
var file = DriveApp.getFileById(destination.getId());
DriveApp.getFolderById(destFolderId).addFile(file);
file.getParents().next().removeFile(file);
file.setSharing(DriveApp.Access.ANYONE_WITH_LINK, DriveApp.Permission.EDIT)
var datevalue = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().getRange(2, 4).getValue()
var newdate = Utilities.formatDate(datevalue, "GMT", 'MM-dd-yyyy')
file.setName("LPU Daily" + " " + newdate )
}
Проблема в том, что все ячейки, значения которых я хочу "скрепить" с электронной таблицей, используют Importrange функция в них, и если я не установлю источник, на который importrange ссылается на Publi c (совместное использование), сценарий не будет работать, и все значения ячеек соответственно будут возвращаться с нулем при копировании. Можно ли как-нибудь заставить этот скрипт работать, сохраняя конфиденциальность исходной таблицы для формул importrange?