Thursday, December 18, 2025

学校活动看板

续上篇《生日墙 Birthday Wall》后,在脑海中,有好些奇怪的想法:

  • 学生生日墙,能不能变成学校教职员的生日墙?
  • 生日墙,是依据日期,自动显示名单。那,能不能稍微修改编码,将学生名字,更换为学校的活动呢?
  • 同样的事情,能不能再变成学术、学生事务、课外活动的看板呢?
自动化的学校活动看板有什么好处?
  • 善用校历:校历都是依据日期编排活动。倘若已在日历有校历记录,能不能让学校活动看板,直接从校历日历中导入?
  • 善用学科活动年历:每一个学科,都会安排活动。但如果将这些活动,从校历中,直接拷贝粘贴的话,日期到了,直接衔接自动显示的话,会不会节省网页管理员的工作呢?
  • 同样的,课外活动的看板,学生事务的看板,能不能照样处理呢?这样一来,学生仅需点击不同的页面,即可看见当天要进行的活动了。
  • 在某种程度上,学校管理员,能不能将学校的活动,变成类似小挑战的游戏活动,引导学生尝试完成各种小挑战(当然是针对学习和品格方便的指引咯)。
  • 从网页管理员的角度来看,这样的转变,几乎可以简化每天处理网页内容的工作。一个版面,即可自动化显示全年的活动了。我相信是可以大大简化网页管理的工作。
  • 倘若在指定的地点,有荧幕的话,仅需显示各项活动看板即可了。
要使用的编码如下:
function updateSlidesWithSheetData() {
  // --- 1. 定义您的文件 ID 和数据范围 ---
  
  // Sheet 1: 学生生日信息
  const sheet1Id = '您的第一张Sheet文件ID'; 
  const range1 = 'Sheet1!A2:D15'; // 例如 '学生生日表!A2:D15'

  // Sheet 2: 学术信息
  const sheet2Id = '您的第二张Sheet文件ID';
  const range2 = 'Sheet1!A2:E20'; // 例如 '学术数据!A2:E20'

  // Sheet 3: 课外活动信息
  const sheet3Id = '您的第三张Sheet文件ID';
  const range3 = 'Sheet1!A2:C10'; // 例如 '活动记录!A2:C10'

  // --- 2. 获取数据 ---
  const data1 = Sheets.Spreadsheets.Values.get(sheet1Id, range1).values;
  const data2 = Sheets.Spreadsheets.Values.get(sheet2Id, range2).values;
  const data3 = Sheets.Spreadsheets.Values.get(sheet3Id, range3).values;

  // --- 3. 更新 Google Slides ---
  const presentation = SlidesApp.getActivePresentation();
  
  // 更新第一张幻灯片(索引从0开始)
  const slide1 = presentation.getSlides()[0]; 
  updateTableInSlide(slide1, data1);

  // 更新第二张幻灯片
  const slide2 = presentation.getSlides()[1];
  updateTableInSlide(slide2, data2);

  // 更新第三张幻灯片
  const slide3 = presentation.getSlides()[2];
  updateTableInSlide(slide3, data3);
}

// 辅助函数:查找并更新幻灯片中的第一个表格
function updateTableInSlide(slide, data) {
  const elements = slide.getPageElements();
  for (let i = 0; i < elements.length; i++) {
    if (elements[i].asPageElement().getPlaceholderType() === SlidesApp.PlaceholderType.TABLE || elements[i].asPageElement().asTable()) {
      // 假设我们只更新找到的第一个表格
      const table = elements[i].asPageElement().asTable();
      // 清除旧数据 (可能需要更复杂的逻辑来匹配行/列)
      // 简单起见,这里假设您有一个预先画好的空表格
      // 更简单的方法是删除旧表格,然后用新数据新建一个表格
      
      // *** 警告:下面的代码需要您手动实现删除旧表格并新建一个 ***
      // 这是一个更可靠的方法:
      elements[i].asPageElement().remove();
      slide.insertTable(data.length, data[0].length, 50, 50, 100, 100).setContents(data);
      return;
    }
  }
}

下一篇,我们讨论看看,如何从学校活动看板,变成每日晨读的工具。是的,这是可行的。

No comments:

Post a Comment

重点介绍

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

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