Tuesday, December 16, 2025

生日墙 Birthday Wall

 
生日墙,顾名思义,就是显示当天生日的寿星。主要目的是提醒和祝福身边,在当天庆祝生日的朋友/学生。

        在学校建立生日墙,是有正面的影响的。当然,也要有足够的能力处理才行。校园要有生日墙的话,必须尽可能简化生日墙的建设工作(别告诉我还要使用传统的布告板和粘贴学生名单)。

        传统的布告板和学生名单,不仅费时费力,还很挤压老师的作息时间。要知道,布置布告板,是多么费神费时的工作啊。但更重要的,其实就是即时性。

        建设电子或网络版的生日墙,在很大程度上,可以有效弥补老师的作息时间。但更重要的是:在布置上,美编上,排版上,多了很多自由和选择(网络的图像和设计,你曾计算吗?)。但比这个更重要的是:网络/电子版的生日墙,可依据当天的日期,即时显示生日的学生。

        嗯,你没有看错。是的。网络/电子版的生日墙,可以依据当天的日期,即时显示当天生日的全部学生

先讲解构思和步骤,方便大家有个基本概念:

  1. 一定要有个汇集、收集、记录全校学生名字、生日的档案。最好是Google Sheet档案。仅需1页即可。个人建议:将这档案与生日统计分析档案,衔接起来。完成生日统计和分析档案后,直接点击链接,并完成这个档案。
  2. 一定要有个作为生日墙(birthday wall)的画面,建议使用Google Slide即可。
  3. 学校设定要显示生日墙的页面(部落格、网页或 site都可以)。
  4. 在显示档案中,使用app script功能,指定时间从记录日期的档案,传送或汇集全校的生日名字过来显示画面中。
  5. 刊登publish 显示画面。
  6. 将画面定位在学校网页、部落格、SITE中备用。
如此一来,倘若没有任何学生进出的话,生日资料就不需要更新,设定时间后,直接在生日墙自动显示。
        下面,我们来看看实际操作:
  1. 创建一个Google Sheet 档案。档案仅需2列 (columns)即可。
  2. 第一列:学生姓名。
  3. 第二列:学生生日日期。格式设定为:年月日。
  4. 别关闭档案。因为等下需要拷贝档案的ID。档案的ID是从 d/之后,/edit之前的链接。
  5. 开启 Google Slide 
  6. 设计好要的美编或插图。
  7. 找出Google Slide的 ID编号。ID是从 d/之后,/edit之前的链接。
  8. 置入一个text box,右击text box,在标题tittle处命名 Birthdaybox
  9. 在google slide 中,点击extension > app script
  10. 然后,将下面的代号,置入画面内:
  11. function updateBirthdaySlide() {
      // ======================================================
      // CONFIGURATION SECTION - PASTE YOUR IDs HERE
      // ======================================================
      var slideId = 'Google Slide的 ID';
      var sheetId = 'Google Sheet 的 ID';
      var sheetName = 'Sheet1'; // Change if your tab has a different name
      // ======================================================

      // 1. Get the Data from the Sheet
      var ss = SpreadsheetApp.openById(sheetId);
      var sheet = ss.getSheetByName(sheetName);
      var data = sheet.getDataRange().getValues();
     
      // 2. Get Today's Date
      var today = new Date();
      var currentMonth = today.getMonth(); // Note: January is 0 in JavaScript
      var currentDay = today.getDate();
     
      var birthdayNames = [];
     
      // 3. Loop through the rows (Starting from row 1 to skip headers)
      for (var i = 1; i < data.length; i++) {
        var name = data[i][0];
        var birthday = new Date(data[i][1]);
       
        // Check if the date is valid, then match Month and Day
        if (birthday && birthday.getMonth() === currentMonth && birthday.getDate() === currentDay) {
          birthdayNames.push(name);
        }
      }
     
      // 4. Create the display message in bullet form
      var displayText = "";
      if (birthdayNames.length > 0) {
        // This creates a list where each name starts with a bullet point
        displayText = "🎉 某某某华小衷心祝福 Happy Birthday to:\n\n" + birthdayNames.map(function(name) {
          return "• " + name;
        }).join("\n") + "\n\n🎂 校方希望对学生说的祝福语";
      } else {
        displayText = "若当天没有学生生日的话,会出现的字眼";
      }
     
      // 5. Update the Google Slide
      var deck = SlidesApp.openById(slideId);
      var slides = deck.getSlides();
      var slide = slides[0]; // Gets the first slide
     
      var shapes = slide.getShapes();
     
      // Find the text box tagged as "BirthdayBox" and update it
      for (var j = 0; j < shapes.length; j++) {
        if (shapes[j].getTitle() === "BirthdayBox") {
           shapes[j].getText().setText(displayText);
        }
      }
    }
  12. 完成编码粘贴后。在app script页面左边的时钟,点选要执行的时间。
  13. 将Google Slide页面,刊登(publish):File > Share > Publish to Web
  14. 点选embed 嵌入选项。准备提取嵌入代码。
  15. 将代码置入学校的部落格、网页、Site中即可。
备注:
  • 建议在生日分析统计档案中,加上衔接这个生日日期的Sheet链接。之后,若没有学生进出的话,每年仅需更新一次即可。
  • 也在这个google sheet档案中,加上回去学校生日统计分析的链接。
感谢神,小小分享,圆了一个多年的梦想。希望对大家有帮助。下一篇,我们探讨,如何让生日墙,变成《学校活动看板》。

No comments:

Post a Comment

重点介绍

学生课堂评估/学习进度记录

学生课堂评估/学习进度表格 样本即日起将透过 学生课堂评估/学习进度记录专页 传递。 特此告知 。(日后所有更新将在专页处理)            俗称rekod perkembangan murid (以前称为rekod transit)的东西。信息工艺TMK的部分,在年级...