Eu tenho um Planilhas Google que contém uma planilha de resumo e aprox. 20 subguias. Na planilha de resumo, criei uma lista suspensa que lista cada uma das subguias.
Quando um usuário seleciona uma subguia específica na lista suspensa e clica no botão Limpar, desejo que os valores de um intervalo especificado de linhas sejam limpos na guia.
Atualmente tenho uma função separada para cada planilha ser limpa. Estou tentando consolidar isso em uma função.
Na imagem anexada, a lista suspensa é fornecida em
Summary!J4
Trecho da lista suspensa
--> Planning
--> Framing
--> Foundation
--> ALL SHEETS
Anexei um trecho de código e uma imagem para esclarecimentos. Qualquer ajuda é muito apreciada. Obrigado!
function clearPlanningfields() {
var myGoogleSheet=SpreadsheetApp.getActiveSpreadsheet();
var shUserForm=myGoogleSheet.getSheetByName("Planning");
var ui=SpreadsheetApp.getUi();
var response=ui.alert("Reset Confirmation", "Do you want to Clear the Sheets?", ui.ButtonSet.YES_NO);
if(response==ui.Button.NO){
return;
}
shUserForm.getRange('H5:H13').setValue('');
shUserForm.getRange('H17:H26').setValue('');
shUserForm.getRange('H30:H31').setValue('');
shUserForm.getRange('H35:H41').setValue('');
shUserForm.getRange('O5:O13').setValue(false);
shUserForm.getRange('O17:O26').setValue(false);
shUserForm.getRange('O30:O31').setValue(false);
shUserForm.getRange('O35:O41').setValue(false);
shUserForm.getRange('N4').setValue(0.00);
shUserForm.getRange('N16').setValue(0.00);
shUserForm.getRange('N29').setValue(0.00);
shUserForm.getRange('N34').setValue(0.00);
myGoogleSheet.toast("Amounts have been Reset from selected Sheet");
return true;
}
function clearFramingfields() {
var myGoogleSheet=SpreadsheetApp.getActiveSpreadsheet();
var shUserForm=myGoogleSheet.getSheetByName("Framing");
var ui=SpreadsheetApp.getUi();
var response=ui.alert("Reset Confirmation", "Do you want to Clear the Sheets?", ui.ButtonSet.YES_NO);
if(response==ui.Button.NO){
return;
}
shUserForm.getRange('H5:H19').setValue('');
shUserForm.getRange('H23:H42').setValue('');
shUserForm.getRange('H46:H66').setValue('');
shUserForm.getRange('H70:H84').setValue('');
shUserForm.getRange('O5:O19').setValue(false);
shUserForm.getRange('O23:O42').setValue(false);
shUserForm.getRange('O46:O66').setValue(false);
shUserForm.getRange('O70:O84').setValue(false);
shUserForm.getRange('N4').setValue(0.00);
shUserForm.getRange('N22').setValue(0.00);
shUserForm.getRange('N45').setValue(0.00);
shUserForm.getRange('N69').setValue(0.00);
myGoogleSheet.toast("Amounts have been Reset from selected Sheet");
return true;
}
function clearFoundationfields() {
var myGoogleSheet=SpreadsheetApp.getActiveSpreadsheet();
var shUserForm=myGoogleSheet.getSheetByName("Foundation");
var ui=SpreadsheetApp.getUi();
var response=ui.alert("Reset Confirmation", "Do you want to Clear the Sheets?", ui.ButtonSet.YES_NO);
if(response==ui.Button.NO){
return;
}
shUserForm.getRange('H5:H10').setValue('');
shUserForm.getRange('H14:H22').setValue('');
shUserForm.getRange('H26:H41').setValue('');
shUserForm.getRange('H45:H55').setValue('');
shUserForm.getRange('H59:H62').setValue('');
shUserForm.getRange('O5:O10').setValue(false);
shUserForm.getRange('O14:O22').setValue(false);
shUserForm.getRange('O26:O41').setValue(false);
shUserForm.getRange('O45:O55').setValue(false);
shUserForm.getRange('O59:O62').setValue(false);
shUserForm.getRange('N4').setValue(0.00);
shUserForm.getRange('N13').setValue(0.00);
shUserForm.getRange('N25').setValue(0.00);
shUserForm.getRange('N44').setValue(0.00);
shUserForm.getRange('N58').setValue(0.00);
myGoogleSheet.toast("Amounts have been Reset from selected Sheet");
return true;
}
SUGESTÃO
Talvez você possa tentar este script ajustado abaixo. Isso identifica automaticamente quais linhas devem ser limpas com base na guia da planilha selecionada.
Roteiro
Demonstração
Por exemplo , a guia Enquadramento foi selecionada no menu suspenso da guia Folha de Resumo .
Aqui está o resultado do registro: