如何调试此 Google AppScript?
How can I debug this Google AppScript?
我根据本教程创建了一个传播sheet 表单:https://www.youtube.com/watch?v=v2X-fArILPA
我的表单比示例视频有更多的输入,我希望输出显示在行中,而不是列中。这使得更容易 copy/paste 将数据转换为其他格式,例如电子邮件。
除了这一行,我几乎所有的脚本都能完美运行:
dataSheet.getRange(dataSheet.getLastColumn() +1,1,1,6).setValues(values);
CLEAR();
我知道 +1,1,1,6 指的是行和列,但我似乎无法让它工作。换句话说,我不知道要按什么顺序添加哪些数字。输出 spreadsheet 应该开始在单元格 B1 中添加数据。共有 36 行。
当我添加 console.log 时,脚本运行正常,但当我点击“提交”按钮时,我的输出 sheet 选项卡中没有任何显示。
相反,我收到此错误消息:
TypeError: Cannot read property 'getRange' of null
Details: TypeError: Cannot read property 'getRange' of null
以下是大括号内的完整脚本:
function SUBMISSIONS() {
var ss = SpreadsheetApp.getActive();
var formSheet = ss.getSheetByName("CREWING-INPUT")
var dataSheet = ss.getSheetByName("OUTPUT");
var values = [[ formSheet.getRange("D8").getValue(),
formSheet.getRange("D9").getValue(),
formSheet.getRange("D10").getValue(),
formSheet.getRange("D11").getValue(),
formSheet.getRange("D12").getValue(),
formSheet.getRange("C13").getValue(),
formSheet.getRange("C14").getValue(),
formSheet.getRange("C15").getValue(),
formSheet.getRange("E13").getValue(),
formSheet.getRange("E14").getValue(),
formSheet.getRange("E15").getValue(),
formSheet.getRange("E16").getValue(),
formSheet.getRange("D16").getValue(),
formSheet.getRange("D19").getValue(),
formSheet.getRange("B18").getValue(),
formSheet.getRange("E21").getValue(),
formSheet.getRange("E22").getValue(),
formSheet.getRange("E23").getValue(),
formSheet.getRange("E24").getValue(),
formSheet.getRange("E25").getValue(),
formSheet.getRange("E26").getValue(),
formSheet.getRange("E27").getValue(),
formSheet.getRange("F21").getValue(),
formSheet.getRange("F22").getValue(),
formSheet.getRange("F23").getValue(),
formSheet.getRange("F24").getValue(),
formSheet.getRange("F25").getValue(),
formSheet.getRange("F26").getValue(),
formSheet.getRange("F27").getValue(),
formSheet.getRange("F28").getValue(),
formSheet.getRange("F29").getValue(),
formSheet.getRange("F30").getValue(),
formSheet.getRange("F31").getValue(),
formSheet.getRange("F32").getValue(),
formSheet.getRange("D33").getValue(),
formSheet.getRange("D34").getValue(),
formSheet.getRange("D35").getValue(),
formSheet.getRange("D36").getValue(),
formSheet.getRange("E34").getValue(),
formSheet.getRange("D37").getValue(),
formSheet.getRange("E37").getValue(),
formSheet.getRange("C38").getValue()]];
dataSheet.getRange(dataSheet.getLastColumn()+1).setValues(values);
CLEAR();
}
console.log(SUBMISSIONS)
这是我最终使用的有效代码:
function SUBMISSIONS() {
var ss = SpreadsheetApp.getActive();
var formSheet = ss.getSheetByName("CREWING-INPUT") // The name
of the spreadsheet tab for the form
var dataSheet = ss.getSheetByName("OUTPUT"); // The name of the
spreadsheet tab for the collection of submissions
var sheetValues = [[new Date().toLocaleString()], // The order of
this list DOES MATTER and will be reflected in the output rows
[formSheet.getRange("D8").getValue()],
[formSheet.getRange("D9").getValue()],
[formSheet.getRange("D10").getValue()],
[formSheet.getRange("D11").getValue()],
[formSheet.getRange("D12").getValue()],
[formSheet.getRange("C13").getValue()],
[formSheet.getRange("C14").getValue()],
[formSheet.getRange("C15").getValue()],
[formSheet.getRange("E13").getValue()],
[formSheet.getRange("E14").getValue()],
[formSheet.getRange("E15").getValue()],
[formSheet.getRange("D16").getValue()],
[formSheet.getRange("E16").getValue()],
[formSheet.getRange("B18").getValue()],
[formSheet.getRange("D19").getValue()],
[formSheet.getRange("E21").getValue()],
[formSheet.getRange("E22").getValue()],
[formSheet.getRange("E23").getValue()],
[formSheet.getRange("E24").getValue()],
[formSheet.getRange("E25").getValue()],
[formSheet.getRange("E26").getValue()],
[formSheet.getRange("E27").getValue()],
[formSheet.getRange("F21").getValue()],
[formSheet.getRange("F22").getValue()],
[formSheet.getRange("F23").getValue()],
[formSheet.getRange("F24").getValue()],
[formSheet.getRange("F25").getValue()],
[formSheet.getRange("F26").getValue()],
[formSheet.getRange("F27").getValue()],
[formSheet.getRange("F28").getValue()],
[formSheet.getRange("F29").getValue()],
[formSheet.getRange("F30").getValue()],
[formSheet.getRange("F31").getValue()],
[formSheet.getRange("F32").getValue()],
[formSheet.getRange("D33").getValue()],
[formSheet.getRange("D34").getValue()],
[formSheet.getRange("D35").getValue()],
[formSheet.getRange("D36").getValue()],
[formSheet.getRange("E34").getValue()],
[formSheet.getRange("D37").getValue()],
[formSheet.getRange("E37").getValue()],
[formSheet.getRange("C38").getValue()]];
dataSheet.getRange(1, dataSheet.getLastColumn()+1,
sheetValues.length,
sheetValues[0].length).setValues(sheetValues);
}
这个有效
function SUBMISSIONS() {
var ss = SpreadsheetApp.getActive();
var sh = ss.getSheetByName("Sheet0")
var osh = ss.getSheetByName("Sheet1");
var vs = [[ sh.getRange("D8").getValue(),
sh.getRange("D9").getValue(),
sh.getRange("D10").getValue(),
sh.getRange("D11").getValue(),
sh.getRange("D12").getValue(),
sh.getRange("C13").getValue(),
sh.getRange("C14").getValue(),
sh.getRange("C15").getValue(),
sh.getRange("E13").getValue(),
sh.getRange("E14").getValue(),
sh.getRange("E15").getValue(),
sh.getRange("E16").getValue(),
sh.getRange("D16").getValue(),
sh.getRange("D19").getValue(),
sh.getRange("B18").getValue(),
sh.getRange("E21").getValue(),
sh.getRange("E22").getValue(),
sh.getRange("E23").getValue(),
sh.getRange("E24").getValue(),
sh.getRange("E25").getValue(),
sh.getRange("E26").getValue(),
sh.getRange("E27").getValue(),
sh.getRange("F21").getValue(),
sh.getRange("F22").getValue(),
sh.getRange("F23").getValue(),
sh.getRange("F24").getValue(),
sh.getRange("F25").getValue(),
sh.getRange("F26").getValue(),
sh.getRange("F27").getValue(),
sh.getRange("F28").getValue(),
sh.getRange("F29").getValue(),
sh.getRange("F30").getValue(),
sh.getRange("F31").getValue(),
sh.getRange("F32").getValue(),
sh.getRange("D33").getValue(),
sh.getRange("D34").getValue(),
sh.getRange("D35").getValue(),
sh.getRange("D36").getValue(),
sh.getRange("E34").getValue(),
sh.getRange("D37").getValue(),
sh.getRange("E37").getValue(),
sh.getRange("C38").getValue()]];
osh.getRange(1,osh.getLastColumn()+1,vs.length,vs[0].length).setValues(vs);
}
全部在一栏中:
function SUBMISSIONS() {
var ss = SpreadsheetApp.getActive();
var sh = ss.getSheetByName("Sheet0");
const rgl = sh.getRangeList(["D8", "D9", "D10", "D11", "D12", "C13", "C14", "C15", "E13", "E14", "E15", "E16", "D16", "D19", "B18", "E21", "E22", "E23", "E24", "E25", "E26", "E27", "F21", "F22", "F23", "F24", "F25", "F26", "F27", "F28", "F29", "F30", "F31", "F32", "D33", "D34", "D35", "D36", "E34", "D37", "E37", "C38"]);
var osh = ss.getSheetByName("Sheet1");
var vs = rgl.getRanges().map(r => [r.getValue()])
osh.getRange(1, osh.getLastColumn() + 1, vs.length, vs[0].length).setValues(vs);
}
我根据本教程创建了一个传播sheet 表单:https://www.youtube.com/watch?v=v2X-fArILPA
我的表单比示例视频有更多的输入,我希望输出显示在行中,而不是列中。这使得更容易 copy/paste 将数据转换为其他格式,例如电子邮件。
除了这一行,我几乎所有的脚本都能完美运行:
dataSheet.getRange(dataSheet.getLastColumn() +1,1,1,6).setValues(values);
CLEAR();
我知道 +1,1,1,6 指的是行和列,但我似乎无法让它工作。换句话说,我不知道要按什么顺序添加哪些数字。输出 spreadsheet 应该开始在单元格 B1 中添加数据。共有 36 行。
当我添加 console.log 时,脚本运行正常,但当我点击“提交”按钮时,我的输出 sheet 选项卡中没有任何显示。
相反,我收到此错误消息:
TypeError: Cannot read property 'getRange' of null
Details: TypeError: Cannot read property 'getRange' of null
以下是大括号内的完整脚本:
function SUBMISSIONS() {
var ss = SpreadsheetApp.getActive();
var formSheet = ss.getSheetByName("CREWING-INPUT")
var dataSheet = ss.getSheetByName("OUTPUT");
var values = [[ formSheet.getRange("D8").getValue(),
formSheet.getRange("D9").getValue(),
formSheet.getRange("D10").getValue(),
formSheet.getRange("D11").getValue(),
formSheet.getRange("D12").getValue(),
formSheet.getRange("C13").getValue(),
formSheet.getRange("C14").getValue(),
formSheet.getRange("C15").getValue(),
formSheet.getRange("E13").getValue(),
formSheet.getRange("E14").getValue(),
formSheet.getRange("E15").getValue(),
formSheet.getRange("E16").getValue(),
formSheet.getRange("D16").getValue(),
formSheet.getRange("D19").getValue(),
formSheet.getRange("B18").getValue(),
formSheet.getRange("E21").getValue(),
formSheet.getRange("E22").getValue(),
formSheet.getRange("E23").getValue(),
formSheet.getRange("E24").getValue(),
formSheet.getRange("E25").getValue(),
formSheet.getRange("E26").getValue(),
formSheet.getRange("E27").getValue(),
formSheet.getRange("F21").getValue(),
formSheet.getRange("F22").getValue(),
formSheet.getRange("F23").getValue(),
formSheet.getRange("F24").getValue(),
formSheet.getRange("F25").getValue(),
formSheet.getRange("F26").getValue(),
formSheet.getRange("F27").getValue(),
formSheet.getRange("F28").getValue(),
formSheet.getRange("F29").getValue(),
formSheet.getRange("F30").getValue(),
formSheet.getRange("F31").getValue(),
formSheet.getRange("F32").getValue(),
formSheet.getRange("D33").getValue(),
formSheet.getRange("D34").getValue(),
formSheet.getRange("D35").getValue(),
formSheet.getRange("D36").getValue(),
formSheet.getRange("E34").getValue(),
formSheet.getRange("D37").getValue(),
formSheet.getRange("E37").getValue(),
formSheet.getRange("C38").getValue()]];
dataSheet.getRange(dataSheet.getLastColumn()+1).setValues(values);
CLEAR();
}
console.log(SUBMISSIONS)
这是我最终使用的有效代码:
function SUBMISSIONS() {
var ss = SpreadsheetApp.getActive();
var formSheet = ss.getSheetByName("CREWING-INPUT") // The name
of the spreadsheet tab for the form
var dataSheet = ss.getSheetByName("OUTPUT"); // The name of the
spreadsheet tab for the collection of submissions
var sheetValues = [[new Date().toLocaleString()], // The order of
this list DOES MATTER and will be reflected in the output rows
[formSheet.getRange("D8").getValue()],
[formSheet.getRange("D9").getValue()],
[formSheet.getRange("D10").getValue()],
[formSheet.getRange("D11").getValue()],
[formSheet.getRange("D12").getValue()],
[formSheet.getRange("C13").getValue()],
[formSheet.getRange("C14").getValue()],
[formSheet.getRange("C15").getValue()],
[formSheet.getRange("E13").getValue()],
[formSheet.getRange("E14").getValue()],
[formSheet.getRange("E15").getValue()],
[formSheet.getRange("D16").getValue()],
[formSheet.getRange("E16").getValue()],
[formSheet.getRange("B18").getValue()],
[formSheet.getRange("D19").getValue()],
[formSheet.getRange("E21").getValue()],
[formSheet.getRange("E22").getValue()],
[formSheet.getRange("E23").getValue()],
[formSheet.getRange("E24").getValue()],
[formSheet.getRange("E25").getValue()],
[formSheet.getRange("E26").getValue()],
[formSheet.getRange("E27").getValue()],
[formSheet.getRange("F21").getValue()],
[formSheet.getRange("F22").getValue()],
[formSheet.getRange("F23").getValue()],
[formSheet.getRange("F24").getValue()],
[formSheet.getRange("F25").getValue()],
[formSheet.getRange("F26").getValue()],
[formSheet.getRange("F27").getValue()],
[formSheet.getRange("F28").getValue()],
[formSheet.getRange("F29").getValue()],
[formSheet.getRange("F30").getValue()],
[formSheet.getRange("F31").getValue()],
[formSheet.getRange("F32").getValue()],
[formSheet.getRange("D33").getValue()],
[formSheet.getRange("D34").getValue()],
[formSheet.getRange("D35").getValue()],
[formSheet.getRange("D36").getValue()],
[formSheet.getRange("E34").getValue()],
[formSheet.getRange("D37").getValue()],
[formSheet.getRange("E37").getValue()],
[formSheet.getRange("C38").getValue()]];
dataSheet.getRange(1, dataSheet.getLastColumn()+1,
sheetValues.length,
sheetValues[0].length).setValues(sheetValues);
}
这个有效
function SUBMISSIONS() {
var ss = SpreadsheetApp.getActive();
var sh = ss.getSheetByName("Sheet0")
var osh = ss.getSheetByName("Sheet1");
var vs = [[ sh.getRange("D8").getValue(),
sh.getRange("D9").getValue(),
sh.getRange("D10").getValue(),
sh.getRange("D11").getValue(),
sh.getRange("D12").getValue(),
sh.getRange("C13").getValue(),
sh.getRange("C14").getValue(),
sh.getRange("C15").getValue(),
sh.getRange("E13").getValue(),
sh.getRange("E14").getValue(),
sh.getRange("E15").getValue(),
sh.getRange("E16").getValue(),
sh.getRange("D16").getValue(),
sh.getRange("D19").getValue(),
sh.getRange("B18").getValue(),
sh.getRange("E21").getValue(),
sh.getRange("E22").getValue(),
sh.getRange("E23").getValue(),
sh.getRange("E24").getValue(),
sh.getRange("E25").getValue(),
sh.getRange("E26").getValue(),
sh.getRange("E27").getValue(),
sh.getRange("F21").getValue(),
sh.getRange("F22").getValue(),
sh.getRange("F23").getValue(),
sh.getRange("F24").getValue(),
sh.getRange("F25").getValue(),
sh.getRange("F26").getValue(),
sh.getRange("F27").getValue(),
sh.getRange("F28").getValue(),
sh.getRange("F29").getValue(),
sh.getRange("F30").getValue(),
sh.getRange("F31").getValue(),
sh.getRange("F32").getValue(),
sh.getRange("D33").getValue(),
sh.getRange("D34").getValue(),
sh.getRange("D35").getValue(),
sh.getRange("D36").getValue(),
sh.getRange("E34").getValue(),
sh.getRange("D37").getValue(),
sh.getRange("E37").getValue(),
sh.getRange("C38").getValue()]];
osh.getRange(1,osh.getLastColumn()+1,vs.length,vs[0].length).setValues(vs);
}
全部在一栏中:
function SUBMISSIONS() {
var ss = SpreadsheetApp.getActive();
var sh = ss.getSheetByName("Sheet0");
const rgl = sh.getRangeList(["D8", "D9", "D10", "D11", "D12", "C13", "C14", "C15", "E13", "E14", "E15", "E16", "D16", "D19", "B18", "E21", "E22", "E23", "E24", "E25", "E26", "E27", "F21", "F22", "F23", "F24", "F25", "F26", "F27", "F28", "F29", "F30", "F31", "F32", "D33", "D34", "D35", "D36", "E34", "D37", "E37", "C38"]);
var osh = ss.getSheetByName("Sheet1");
var vs = rgl.getRanges().map(r => [r.getValue()])
osh.getRange(1, osh.getLastColumn() + 1, vs.length, vs[0].length).setValues(vs);
}