Javascript 谷歌Web应用程序脚本问题生日提醒
我试图在Google web应用程序上显示一条生日提醒消息,数据存储在Google sheets中 我在部署的web应用程序上得到的消息是-->今天是未定义的生日 下面是我的脚本代码Javascript 谷歌Web应用程序脚本问题生日提醒,javascript,google-apps-script,google-sheets,Javascript,Google Apps Script,Google Sheets,我试图在Google web应用程序上显示一条生日提醒消息,数据存储在Google sheets中 我在部署的web应用程序上得到的消息是-->今天是未定义的生日 下面是我的脚本代码 function main() { var sheet = SpreadsheetApp.getActive().getSheetByName("Birthdays"); var numRows = sheet.getLastRow(); var range = sheet.get
function main() {
var sheet = SpreadsheetApp.getActive().getSheetByName("Birthdays");
var numRows = sheet.getLastRow();
var range = sheet.getRange(2, 1, numRows - 1, 2).getValues();
for(var index in range) {
var row = range[index];
var name = row[0];
var birthday = row[1];
if(isBirthdayToday(birthday)) {
displayReminder(name);
}
}
}
// Check if a person’s birthday is today
function isBirthdayToday(birthday) {
var today = new Date();
if((today.getDate() === birthday.getDate()) &&
(today.getMonth() === birthday.getMonth())) {
return true;
} else {
return false;
console.log(today);
}
}
// Function to display the reminder
function displayReminder(name) {
var message = "It is " + name + " 's birthday today.";
return message;
console.log(displayReminder);
}
Html
函数onSuccess(引号){
var div=document.getElementById('Bday');
div.innerHTML=quote;
}
google.script.run.withSuccessHandler(onSuccess)
.display提醒();
注意:当我运行函数isBirthdayToday(生日)的控制台日志时,我得到以下错误
TypeError:无法读取未定义的属性“getDate”(第25行,文件“代码”)
我想不出哪里出了错。发生了什么错误?回答:
当您使用for(范围内的var index)时,
index不是数组的文本索引,而是实际的元素本身
代码修复:
您可以通过不引用范围
的索引
元素来解决此问题,因为索引
已经是元素:
var range=sheet.getRange(2,1,numRows-1,2).getValues();
用于(范围内的var行){
变量名称=行[0];
var生日=行[1];
// ...
}
您还从HTML调用了错误的函数:
google.script.run.withSuccessHandler(onSuccess.displayReminder();
应该是:
google.script.run.withSuccessHandler(onSuccess.main();
从内部main()
还需要返回消息:
函数main(){
//…这里是代码
如果(isBirthdayToday(生日)){
返回显示提醒(名称);
}
}
我希望这对你有帮助
参考资料:
for(范围内的var index)时,
index不是数组的文本索引,而是实际的元素本身
代码修复:
您可以通过不引用范围
的索引
元素来解决此问题,因为索引
已经是元素:
var range=sheet.getRange(2,1,numRows-1,2).getValues();
用于(范围内的var行){
变量名称=行[0];
var生日=行[1];
// ...
}
您还从HTML调用了错误的函数:
google.script.run.withSuccessHandler(onSuccess.displayReminder();
应该是:
google.script.run.withSuccessHandler(onSuccess.main();
从内部main()
还需要返回消息:
函数main(){
//…这里是代码
如果(isBirthdayToday(生日)){
返回显示提醒(名称);
}
}
我希望这对你有帮助
参考资料:
类型错误:无法读取属性“getDate”?如果是,第25行是什么?如果((today.getDate()==birth.getDate())&&&getDate()
不是字符串类型的方法,而是日期类型的方法。您需要在工作表中设置单元格格式-突出显示范围B2:B
并选择格式>数字>更多格式>自定义数字格式
菜单项,在新打开的模式中键入d/m
,然后单击应用
。然后重试运行脚本。即使更改了格式,我仍然会收到错误,这是我正在处理的工作表。您可以复制它以获得更好的洞察力。我仍然会收到与“今天是undefined的生日”相同的未定义名称以及消息这对我来说没有问题……您是否仍然在控制台中获得未定义的属性“getDate”的TypeError:无法读取?如果是,第25行是什么?如果((today.getDate()==Birth.getDate())&&getDate()
不是字符串类型的方法,而是日期类型的方法。您需要在工作表中设置单元格格式-突出显示范围B2:B
并选择格式>数字>更多格式>自定义数字格式
菜单项,在新打开的模式中键入d/m
,然后单击应用
。然后重试运行脚本。即使更改了格式,我仍然会收到错误,这是我正在处理的工作表。您可以复制它以获得更好的洞察力。您是否考虑过只使用日历记录您的所有生日,然后在该日历中查找您的每日事件,然后您将获得当天的所有生日有没有考虑过只使用日历记录你所有的生日,然后在日历中查找你每天的活动,然后你就可以得到那天的所有生日
<div>
<script>
function onSuccess(quote) {
var div = document.getElementById('Bday');
div.innerHTML = quote;
}
google.script.run.withSuccessHandler(onSuccess)
.displayReminder();
</script>
<em> <p id="Bday"></p></em>
</div>