Então estou tentando fazer uma função que procura por células vazias. Engraçado o suficiente, funciona perfeitamente em outro script, mas recusa no principal. Parece que por algum motivo quando eu chamo uma função que requer Sheet e Range para funcionar, Range é tomado pela função corretamente (exemplo: 'C4:C34'). Mas a planilha não é. Ela se torna apenas "Planilha" no log. Mas eu dou uma função "planilha3". Eu tentei dar o nome da planilha com ' ', para renomear "planilha3" para "planilhatrd", mas nada parece ajudar.
Aqui está a função em si:
function findEmptyCell(sheet, range) {
var checkRange = transformCords(range);
Logger.log(sheet);
Logger.log(range);
Logger.log(checkRange);
for (var i = checkRange[1][0]; i < checkRange[1][1]; i++) {
if ((sheet.getRange(checkRange[0][0] + i).isBlank())) {
return sheet.getRange(checkRange[0][0] + i).getA1Notation();
}
}
}
E onde eu chamo isso:
var startPos = transformCords(findEmptyCell(sheet3, 'С4:С34'));
for (let i = 0; i < 4; i++) {
sheet3.getRange(arrDay[i]+startPos[1])
.setValue(sheet1.getRange('K' + (40 + i)).getValue());
}
E se for importante:
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet1 = ss.getSheetByName('Журнал');
var sheet2 = ss.getSheetByName('Бар');
var sheet3 = ss.getSheetByName('Итоги');
Você já tentou, com atenção, um nome de folha simples em latim (pois acho que você está ciente da possibilidade de o problema estar relacionado a caracteres cirílicos), o que eu também suspeitei inicialmente -- mas sem efeito. No entanto, os caracteres são, na verdade , o cerne do problema, só não onde você pensa que estão.
O problema é quase certamente por causa desta string
'С4:С34'
. OС
caractere usado aqui é um caractere cirílico Es e não um latinoC
. Dada a aparência idêntica, isso é muito difícil de detectar! Eles têm códigos de caracteres Unicode diferentes, e as APIs do Google consideram apenas o latinoC
. Usei um detector Unicode simples para destacar o problema.Tente
'C4:C34'
em vez disso. Esta é a verdadeira fonte da "Exceção: Intervalo não encontrado".Observe que
Logger.log(sheet);
aparecer como simplesmenteSheet
é esperado.Sheet
aqui está uma referência ao nome do construtor do objeto que você está registrando (análogo ao nome da "classe" do objeto) e não ao nome da planilha que o representa nas APIs do Google. Também mostraria isso se você registrasse qualquerSheet
objeto. Então, neste caso, é uma "pista falsa".