首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Google应用程序脚本问题上的生日提醒

Google应用程序脚本问题上的生日提醒
EN

Stack Overflow用户
提问于 2020-11-17 14:44:13
回答 1查看 388关注 0票数 0

我试图在Google应用程序上显示一条生日提醒信息,其中数据存储在google中。

我在部署的web应用程序上得到的信息是-->今天是未定义的的生日。

下面是我的脚本代码

代码语言:javascript
复制
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

代码语言:javascript
复制
<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>

注意:当我为函数isBirthdayToday(生日)运行控制台日志时,我会得到以下错误。

TypeError:无法读取未定义的属性“getDate”(第25行,文件“getDate”)

我不知道我哪里出了问题。发生了什么错误?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-11-17 15:08:07

答案:

当您使用for (var index in range)索引时,它不是数组的文字索引,而是实际的元素本身。

代码修正:

您可以通过不引用rangerange元素来解决这个问题--因为index已经是元素:

代码语言:javascript
复制
var range = sheet.getRange(2, 1, numRows - 1, 2).getValues();
for (var row in range) {
  var name = row[0];
  var birthday = row[1];
  // ...
}

您还从HTML调用了错误的函数:

代码语言:javascript
复制
google.script.run.withSuccessHandler(onSuccess).displayReminder();

应:

代码语言:javascript
复制
google.script.run.withSuccessHandler(onSuccess).main();

main()内部,您还需要返回消息:

代码语言:javascript
复制
function main() {
  // ... code here
  if(isBirthdayToday(birthday)) {
    return displayReminder(name);
  }
}

参考文献:

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64877458

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档