未定义参考错误常量。我不明白为什么



我有一个像这样的简单脚本

function importazione() {
const ss = SpreadsheetApp.getActiveSpreadsheet();
const wsd = ss.getSheetByName("morosi");
wsd.getRange(2,1,1000,10).clearContent();
SpreadsheetApp.flush();
const ws = ss.getSheetByName("importa");
const max_riga = ws.getLastRow();
var dati = ws.getRange(2, 1, max_riga-1, 6).getValues();

dati.forEach(r => {                  
scriviElenco({
corso: r[0],
ciclo: r[1],
studente: r[2],
status: r[4],
id_matr: r[5]
});
});
}
function scriviElenco(passa) {
if (passa.status === "NO PAGÓ") {    
var daSplittare = passa.corso+"|"+passa.studente+"|"+passa.id_matr;
var riga = [];
riga = daSplittare.split("|");
wsd.appendRow(riga);
};
}

在最后一行返回这个错误:

ReferenceError: wsd is not defined

我不明白为什么没有定义wsd常数,我有更复杂的脚本,我使用相同的定义,它的工作原理。有人能帮我理解一下吗?

我不明白为什么没有定义wsd常数

wsd不在您的第二个功能scriviElenco()范围内;它只在importazione()范围内-因为Javascriptconst定义具有块范围。这实际上是有意义的,因为wsd只在执行importazione()时设置,并且不能期望它在第二个函数中具有有效值。因此,您可能需要这样写:

function scriviElenco(passa) {
const ss = SpreadsheetApp.getActiveSpreadsheet();
const wsd = ss.getSheetByName("morosi");
// your existing implementation
}

,甚至可能是一行帮助函数,如:

function getSheet(sheetName) {
return SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sheetName);
}

,在两个函数的开头赋值给一个常量。

最新更新