🚧app.writeAwardList()

/**
 * app.writeAwardList()
 * ====================
 * 主要功能:將受獎名單寫入「得獎名單」頁面
 */
app.writeAwardList = function() {

  /* ------------------------ 準備 Sheet --------------------------- */

  // 「各班平均」頁面
  let sheet = app.sheet.byName('得獎名單');
  sheet.clear();

  /* ------------------------ 準備 Data --------------------------- */

  const award = app.award;    // 獎金

  let data = [
    ['編號',	'班級',	'姓名',	'日常生活表現',	'學業總平均',	'金額',	'蓋章或簽名']
  ];

  app.awardList.forEach((s, i) => {
    data.push([i+1, s.classNo, s.name, '表現優秀', s.average, award, '']);
  });

  const rows = data.length;
  const cols = data[0].length;

  /* ------------------------ 設定主標題 --------------------------- */

  sheet.getRange(1,1).setFormula('="臺北市 "&Year&" 學年度第 "&Semester&" 學期高級中等學校學生獎學金印領清冊"');
  sheet.getRange(2,1).setValue(`校名:臺北市立陽明高級中學`);

  /* ------------------------ 寫入 Data --------------------------- */

  const r0 = 4;
  app.sheet.writeData('得獎名單', data, r0, 1);


  /* ------------------------ 寫入表尾 --------------------------- */

  const n = rows - 1;               // 總人數
  const total = n * +award;         // 合計總金額
  const junior = (+app.semester === 2) ? `;一年級上學期名額併入本學期,爰每班分配 2 名` : '';

  const footer = [
    [`合計總人數:${n}`, '', '', `合計總金額:${total}`, '', '', ''],
    [`學校總人數:`, '', '', `學校總班級數:`, '', '', ''],
    ['', '', '', '', '', '', ''],
    ['承辦人:',	'', '',		'註冊組長:',	'教務主任:',	'',	'校長:'],
    ['', '', '', '', '', '', ''],
    ['', '', '', '', '', '', ''],
    ['出納:',	'', '',		'主計人員:',	'會計主任:', '', '',],
    ['', '', '', '', '', '', ''],
    ['', '', '', '', '', '', ''],
    ['⭐️ 本表填妥後,請核章。', '', '', '', '', '', ''],
    [`⭐️ 二、三年級每班分配 1 名${junior}。`, '', '', '', '', '', ''],
  ];

  app.sheet.writeData('得獎名單', footer, r0+rows+1, 1);


  /* ------------------------ 範圍 (Range) --------------------------- */

  const tableRange = sheet.getRange(r0, 1, rows, cols);
  const tableHeader = sheet.getRange(r0, 1, 1, cols);
  const avgColumn = sheet.getRange(r0+1, 5, rows-1, 1);
  const tableFooter = sheet.getRange(r0+rows+1, 1, footer.length, footer[0].length);
  const A1 = sheet.getRange(1,1);

  /* ------------------------ 對齊 --------------------------- */

  app.range.alignCenter(tableRange);
  app.range.alignCenter(A1);
  tableFooter.setHorizontalAlignment('left');   // 靠左

  /* ------------------------ 框線 --------------------------- */

  app.range.setBorder(tableRange, BorderStyle.allThin);

  /* ------------------------ 設定背景 --------------------------- */

  tableHeader.setBackground('#eeeeee');

  /* ------------------------ 設定數字格式 --------------------------- */

  avgColumn.setNumberFormat('0.00');

  /* ------------------------ 其他設定 --------------------------- */

  app.sheet.trim(sheet);                      // 刪除多餘的欄位

  sheet.setColumnWidths(1, 2, 40);              // 編號	班級
  sheet.setColumnWidths(3, 1, 60);              // 姓名
  sheet.setColumnWidths(4, 1, 100);             // 日常生活表現
  sheet.setColumnWidths(5, 1, 80);              // 學業總平均
  sheet.setColumnWidths(6, 1, 60);              // 金額
  sheet.setColumnWidths(7, 1, 120);              // 蓋章或簽名

  sheet.getRange(1, 1, 1, cols).mergeAcross();  // 合併儲存格(主標題)
  
}

Last updated