Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在对象中找不到函数_Javascript_Google Apps Script_Prototype - Fatal编程技术网

Javascript 在对象中找不到函数

Javascript 在对象中找不到函数,javascript,google-apps-script,prototype,Javascript,Google Apps Script,Prototype,我正在开发一个GoogleSheets应用程序来取代我的订阅任务管理器。该脚本适用于每日、每周、双月、季度、半年和每年。脚本在“每个工作日”失败,错误如下: TypeError:找不到函数加载项对象Mon Dec 28 2015 00:00:00 GMT-0600(CST)。(第69行,文件“代码”) 原型函数在代码的每日、每周等部分似乎工作正常,但在“每个工作日”部分却工作异常。我试着将原型函数移到不同的部分,但没有成功 该表的结构如下: 每一行代表一个离散的任务 列A=“X”表示任务已完成

我正在开发一个GoogleSheets应用程序来取代我的订阅任务管理器。该脚本适用于每日、每周、双月、季度、半年和每年。脚本在“每个工作日”失败,错误如下:

TypeError:找不到函数加载项对象Mon Dec 28 2015 00:00:00 GMT-0600(CST)。(第69行,文件“代码”)

原型函数在代码的每日、每周等部分似乎工作正常,但在“每个工作日”部分却工作异常。我试着将原型函数移到不同的部分,但没有成功

该表的结构如下:

  • 每一行代表一个离散的任务
  • 列A=“X”表示任务已完成
  • C列描述了该任务
  • 第I列包含重复日期,即mm/dd/yyyy
  • K列包含重复类型(每日、每周等)
这是我的密码:

//声明全局变量
var ws=SpreadsheetApp.getActiveSheet();
var lRow=ws.getLastRow();
var lCol=ws.getLastColumn()
var范围=ws.getRange(lRow,1,2,lCol);
//在工作表中创建自定义菜单
函数onOpen(){
var ui=SpreadsheetApp.getUi();
ui.createMenu(“自定义”)
.addItem('完成当前任务','完成任务')
.addItem('重复任务','重复任务')
.addItem('重新排序','自定义排序')
.addToUi();
}
函数compTask(){
var booFound;//将booFound声明为False
var actRow=ws.getActiveRange().getRow();
var dateDue=ws.getRange('I'+actRow).getValue();
var strepeat=ws.getRange('K'+actRow).getValue();
var dateRepeat=新日期();
var dateNow=新日期();
如果(strRepeat==“每日”){
booFound=true;
dateRepeat=dateDue.add(“d”,1);
}
如果(strRepeat==‘每周’){
booFound=true;
dateRepeat=dateDue.add(“d”,7);
}
如果(strRepeat==‘双周’){
booFound=true;
dateRepeat=dateDue.add(“d”,14);
}
如果(strRepeat==‘每月’){
booFound=true;
dateRepeat=dateDue.add(“mo”,1);
}
如果(strRepeat==‘双月’){
booFound=true;
dateRepeat=dateDue.add(“mo”,2);
}
如果(strRepeat==‘季度’){
booFound=true;
dateRepeat=dateDue.add(“mo”,3);
}
如果(strRepeat==‘每半年一次’){
booFound=true;
dateRepeat=dateDue.add(“mo”,6);
}
如果(strRepeat==‘每年’){
booFound=true;
dateRepeat=dateDue.add(“y”,1);
}
如果(strRepeat=='每个工作日'){
booFound=true;
if(dateDue.getDay()<5){
dateRepeat=dateDue.add(“d”,1);
}否则{
dateRepeat=dateDue.add(“d”,8);
var dayNumber=dateDue.getDay();
dayNumber=~dayNumber+1;
dateRepeat=dateRepeat.add(“d”,日数);
}
}
如果(booFound){
var范围=ws.getRange(actRow,1,1,lCol);
ws.insertRowsAfter(actRow,1);
range.copyTo(ws.getRange(actRow+1,1,1,lCol){
仅内容:错误
});
ws.getRange('A'+actRow).setValue('X');
ws.getRange('J'+actRow).setValue(dateNow);
ws.getRange('I'+(actRow+1)).setValue(dateRepeat);
}否则{
ws.getRange('A'+actRow).setValue('X');
ws.getRange('J'+actRow).setValue(dateNow);
}
}
Date.prototype.add=函数(sInterval,iNum){
var dTemp=此;
如果(!sInterval | | iNum==0)返回dTemp;
开关(sInterval.toLowerCase()){
案例“ms”:
dTemp.setmillizes(dTemp.getmillizes()+iNum);
打破
案例“s”:
dTemp.setSeconds(dTemp.getSeconds()+iNum);
打破
案例“mi”:
dTemp.setMinutes(dTemp.getMinutes()+iNum);
打破
案例“h”:
dTemp.setHours(dTemp.getHours()+iNum);
打破
案例“d”:
dTemp.setDate(dTemp.getDate()+iNum);
打破
案例“mo”:
dTemp.setMonth(dTemp.getMonth()+iNum);
打破
案例“y”:
dTemp.setFullYear(dTemp.getFullYear()+iNum);
打破
}
返回dTemp;
}
函数customSort(){
var sheet=SpreadsheetApp.getActiveSheet();
var allData=sheet.getDataRange();
var range=sheet.getRange(2,1,allData.getNumRows()-1,allData.getNumColumns());
排序([1,9,12]);
setActiveCell(ws.getRange(2,1));
}
函数dupeTask(){
var actRow=ws.getActiveRange().getRow();
var范围=ws.getRange(actRow,1,1,lCol);
ws.insertRowsAfter(actRow,1);
range.copyTo(ws.getRange(actRow+1,1,1,lCol){
仅内容:错误
});
}

检查特定单元格的格式。看起来这个特定的单元格不是被识别为日期,而是被识别为字符串。尝试使用调试器,它会告诉您变量中包含的值的类型。除了@Gerado的解决方案外,您还可以使用日期构造函数格式化该值。所以:var dateDue=new Date(…getValue());JavaScript将解释给定的字符串或数字,并返回一个日期对象。Geraldo&Jens,感谢您的评论。我在调试器上运行compTask,它确认传递给add的值确实是日期变量。神秘的是,为什么除了“每个工作日”之外,添加对每个选择都有效,因为它传递的是相同的变量?我编辑了我的原始帖子,以包含调试器运行的图像。请参阅上面的“compTask在显示变量类型的调试器中运行”。这种情况是仅在该日期发生还是在所有日期发生?