Atualize a função personalizada automaticamente
-
26-09-2019 - |
Pergunta
Eu tenho uma função personalizada como um script de planilha do Google, que depende dos valores de outras células. Ele funciona bem na primeira vez em que o coloco em uma célula, mas quando altero os dados nas outras células, ele permanece o mesmo. Como posso fazer com que a primeira célula atualize seu valor automaticamente quando troco as outras células?
Solução
Encontrei uma resposta que não me deixa totalmente feliz, mas é bom o suficiente, eu acho. Se você adicionar uma função chamada onEdit
Para o roteiro de uma planilha, ela será chamada sempre que as coisas são editadas. Então, este é o código que funcionou para mim: (tem alguns detalhes que podem ser úteis, então eu os deixei sem edição)
function onEdit(event) {
if (SpreadsheetApp.getActiveSheet().getName().substr(0,5) == "thing")
SpreadsheetApp.getActiveSheet().getRange("I1").setValue(myCustomFunction());
}
Isso faz folhas cujo nome começa com thing
, obtenha o resultado de myCustomFunction
na célula I1
.
Outras dicas
Eu tenho um problema similar.
É assim que estou fazendo isso atm, mas não é a melhor solução. Estou procurando um melhor.
Se algum valor nos preços da folha e na coluna D mudar. Significado Se algum valor da célula for alterado em toda a coluna, atualiza o valor da função personalizado.
//Search Price sheet with the given name. Return price. dummy param updates google ss once the "Prices" sheet values changed.
function searchPrice(price,dummy)
{
var SPREADSHEET_NAME = "Prices";
var SEARCH_COL_IDX = 2;
var RETURN_COL_IDX = 3;
var values = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(SPREADSHEET_NAME).getDataRange().getValues();
for (var i = 0; i < values.length; i++)
{
var row = values[i];
if (row[SEARCH_COL_IDX] == price)
{
return row[RETURN_COL_IDX];
}
}
}
É assim que você chama de explosão (B8, preços! D: D)
Basta dar à sua função personalizada um param dummy. Não faz nada na função personalizada.