Я пытаюсь создать кнопку с помощью скрипта Google на листе, которая создаст еще один отфильтрованный лист.Затем мне нужна ячейка A2, чтобы заполнить ее фильтрованной функцией IMPORTRANGE, которую я создал.Проблема заключается в том, что функция возвращает ошибку, в которой говорится: «При оценке FILTER совпадений не найдено».В нем говорится, что поскольку функция IMPORTRANGE возвращает опорную ошибку, поскольку доступ к исходной электронной таблице не был одобрен.Это требует, чтобы я вручную удалил функцию элементов FILTER, утвердил доступ между двумя листами, а затем повторно добавил элементы FILTER в функцию.Мне было интересно, есть ли какой-нибудь способ автоматически утвердить доступ между листами, чтобы при первом открытии вновь созданного листа все работало так, как должно.
Созданная мной функция листов Googleis =filter(IMPORTRANGE("https://docs.google.com/spreadsheets/d/103XMy_5qboN7sRcVbkJ0XAG7soNJdwURCv7cXJ4pS8E/edit#gid=0","Situations!A:Q"),(IMPORTRANGE("https://docs.google.com/spreadsheets/d/103XMy_5qboN7sRcVbkJ0XAG7soNJdwURCv7cXJ4pS8E/edit#gid=0","Situations!c:c")="9")+(IMPORTRANGE("https://docs.google.com/spreadsheets/d/103XMy_5qboN7sRcVbkJ0XAG7soNJdwURCv7cXJ4pS8E/edit#gid=0","Situations!g:g")="9"))
Функция фильтрует данные в исходной электронной таблице только по строкам, которые содержат 9
в любом столбце C
или G
Лист содержит данные, которыеперед тем, как его можно будет распространить, его необходимо отфильтровать, поскольку только определенные люди могут просматривать определенные данные на листе.Кнопка, которую я создаю, предназначена для автоматического создания отфильтрованного листа, который обновляется по мере обновления мастер-листа.Вот код, который я написал до сих пор:
function createFilteredSheet(e) {
SpreadsheetApp.getUi()
.createMenu('Create Filtered Sheet')
.addItem('Create Filtered Sheet', 'createFilteredSheet_')
.addToUi();
}
function createFilteredSheet_() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var SituationsSheet = ss.getSheetByName('Situations');
var sheetId = ss.getId();
var labelArray = SituationsSheet.getRange('A1:Q1').getValues();
var filterValue = Browser.inputBox('Create Filtered Sheet', 'Enter the value of what you would like to filter:', Browser.Buttons.OK_CANCEL);
Logger.log(filterValue);
if(filterValue == 'cancel') {return;}
var shareEmail = [Browser.inputBox("Email Address to Share With", "Enter the email address you would like to share the sheet with:", Browser.Buttons.OK_CANCEL)];
Logger.log(shareEmail);
if(shareEmail == 'cancel') {return;}
var createNewSheet = SpreadsheetApp.create(filterValue + ' Filter Sheet')
.addEditors(shareEmail)
.getId();
var addFormula = SpreadsheetApp.openById(createNewSheet)
.getRange('A2')
.setValue('=filter(IMPORTRANGE("https://docs.google.com/spreadsheets/d/'+sheetId+'/edit#gid=0","Situations!A:Q"),(IMPORTRANGE("https://docs.google.com/spreadsheets/d/'+sheetId+'/edit#gid=0","Situations!c:c")="'+filterValue+'")+(IMPORTRANGE("https://docs.google.com/spreadsheets/d/'+sheetId+'/edit#gid=0","Situations!g:g")="'+filterValue+'"))');
var addLabels = SpreadsheetApp.openById(createNewSheet)
.getRange('A1:Q1')
.setValues(labelArray);
}