我正在尝试创建一个脚本,将 Google表单响应表添加到新创建的 Google表格,然后在同一个电子表格中创建后续表格。这些床单在创建时命名。这是我到目前为止的代码:
var statusSheet, form, ss = SpreadsheetApp.openById("SPREADSHEET_ID")
if (ss.getFormUrl() == null){
form = FormApp.create("NEWFORM")
.setCollectEmail(true)
.setProgressBar(false)
.setRequireLogin(true)
.setDestination(FormApp.DestinationType.SPREADSHEET, ss.getId())
Utilities.sleep(3000)
}
else{form = FormApp.openByUrl(ss.getFormUrl())}
if (ss.getSheets()[1].getRange("A1").getValue() != 'Status'){
ss.getSheets()[1].setName("Status")
.getRange("A1:C8")
.setValues([["Status",'',"Staff"],["Staff",'',"Student"],["Students",,"building"],["Penalty Box",'',"scope"],["Current Offenders",'',"formCreated"],["Audit Log",'',"formPopulated"],['','',"TimeTrigger"],["Form ID",'',"EditTrigger"]])
Utilities.sleep(3000)
}
statusSheet = ss.getSheetByName("Status")
ss.setActiveSheet(ss.getSheets()[(ss.getSheets().length)-1])
while (ss.getSheets().length < 7){
var newSheet = ss.insertSheet()
var range = statusSheet.getRange(newSheet.getIndex(),2, 1, 1)
range.setValue(newSheet.getSheetId())
newSheet.setName(statusSheet.getRange(newSheet.getIndex(),1, 1, 1).getValue())
Logger.log(newSheet.getName())
}
var staffSheet = ss.getSheetByName("Staff")
var studentsSheet = ss.getSheetByName("Students")
var PenaltyOUSheet = ss.getSheetByName("OrgUnits")
var currentBoxUsersSheet = ss.getSheetByName("Current Users")
var auditLogSheet = ss.getSheetByName("Audit Log")
似乎所有工作表都已创建,“工作人员”除外。无论是在执行函数之前还是在执行期间创建表单和/或,都会创建表格。更糟糕的是,for循环中的记录器没有记录错误。
我尝试将整个函数包含在try / catch语句中,但没有迹象表明除了对staffSheet的引用失败之外,错误可能是什么,因为没有工作表被命名为“Staff”。
答案 0 :(得分:0)
将复制的范围向下移动可以解决问题。我不赞成为什么它会跳过员工表而不是审核日志,但是在我解决了所有其他问题之后我会想出来。