Day 7— 自动化回信机(4) 勾选後寄出通知信

我们已经顺利的将 onEdit(e) 以及 MailApp.sendMail(message) 学完了,那麽下一步当然就是把它结合起来罗!

结合的概念非常简单,但是我们也先来想一下,要怎麽处理!

先上一下简易流程图:

好简单的流程图...

没错,其实就是这麽简单,所以我们把程序码也简单的写好:

function onEdit(e) {
  const theSheet = e.range.getSheet();
  const theRowIndex = e.range.getRow();
  const theColIndex = e.range.getColumn();
  const thisRange = theSheet.getRange(theRowIndex, 1, 1, theColIndex);
  const theData = {}
  theData.email = thisRange.getCell(1, 2).getValue();
  theData.shoolId = thisRange.getCell(1,3).getValue();
  theData.class = thisRange.getCell(1,4).getValue();
  theData.name = thisRange.getCell(1,5).getValue();
  console.log(theData);
  MailApp.sendEmail({
    to: theData.email, // 这边我们直接把取得的 email 带入
    subject: "【系统信件 请勿回复】就是爱兔兔教,兔兔教是唯一真神!",
    body: `亲爱的同学 ${theData.name} 你好
    你的密码已经修改为「我爱兔兔教」,
    请务必记好你的新密码!
    `
  });
}

直接把之前的程序码给利用起来!??

这样就好了!

没错,事情就是这麽简单!

然後我们储存之後,去打勾一个项目吧!

这边务必注意你的信箱可否收信喔~

我们把这个项目打勾,然後到信箱去看一下。

等到天荒地老都没有东西…

咦?为什麽都没东西啊!?

回到执行项目看一下结果:

失败!?

我们看一下 error log:

蛤!?

没有授权!?

可是我们前面不是已经有过授权了吗!?

https://ithelp.ithome.com.tw/upload/images/20210922/20139067SHCEe9laUU.png

就在我看 error log 发疯的时候,嘴一歪,眼一斜,看到了文件中的内容:

路径:Guides > Triggers and events > Simple triggers

……原来用 simple trigger 是没有权限使用其他需要授权的服务的…

好死不死,我们要寄信,就必须要拥有 email 寄信的授权。

那该怎麽办?别担心,文件也知道你可能要用到这个,所以下面也有给解法:

原来还有一种叫做 installable trigger 的东西,所以转移焦点到 installable trigger 看一下怎麽做:

如果看到头昏眼花,这是正常现象…我来总结一下!

总之,就是设定好你的 function 然後切到 触发条件 ,就可以设定什麽状态下会触发这个条件。

所以我们切换回程序码,先修改一下:

function onEditTrigger() {
  const e = {
    range: SpreadsheetApp.getActiveRange()
  };
  const theSheet = e.range.getSheet();
  const theRowIndex = e.range.getRow();
  const theColIndex = e.range.getColumn();
  const thisRange = theSheet.getRange(theRowIndex, 1, 1, theColIndex);
  const theData = {};
  theData.email = thisRange.getCell(1, 2).getValue();
  theData.shoolId = thisRange.getCell(1,3).getValue();
  theData.class = thisRange.getCell(1,4).getValue();
  theData.name = thisRange.getCell(1,5).getValue();
  console.log(theData);
  MailApp.sendEmail({
    to: theData.email, // 这边我们直接把取得的 email 带入
    subject: "【系统信件 请勿回复】就是爱兔兔教,兔兔教是唯一真神!",
    body: `亲爱的同学 ${theData.name} 你好
    你的密码已经修改为「我爱兔兔教」,
    请务必记好你的新密码!
    `
  });
}

这边为了不要修改下面的程序码,所以我建立一个变数 e,并让他是一个 object,有一组 key-pairs range: SpreadsheetApp.getActiveRange()

接下来我们进入 触发条件

然後点选右下角的新增触发条件:

接下来可以注意下图的两个红框:

第一个红框是指你要执行的 function,第二个是触发条件。

我们第一个执行功能就是我 onEditTrigger ,所以不用修改。

第二的要按下去选择「文件内容更变时」:

完成後就直接按「储存」:

接下来会进入权限授权,这边就不特别标出来了!

总之结束之後就会看到这个画面:

接下来我们去试试看吧!

大成功!!???


今天的教学就到这里罗!

但是事实上这个在使用上还有许多的 bug,所以明天我们要来修正喔!

今天的作业:

试着思考,哪里还需要改进呢?

希望大家都能想出来喔!

明天见,掰掰~


关於兔兔们:


学生:老师你今天教的变精实了耶?
我:当然啊,後面会越来越精实!
学生:但废话也变多了(小声)
我:…你就站在我旁边,在小声都还是听得到的…

<<:  Day8 Html常用标签_3

>>:  [DAY 07]查询各国物品名称

前言

你好,我是 ALPHA Camp 的 Bernard。感谢你来阅读我的文章。这次铁人赛我会针对「成为...

Day 3 - cheatSheet 小技巧与本机环境设定

CheatSheet 小技巧 因为大家其实不太会被指令 所以在网路上有一个小小的P5 cheatsh...

Day 15 - 函数与物件互动2

var color1 ='red'; var r1 = 50; var colorList = [&...

【9】各种优化器(Optimizer) 大车拼实验

Colab连结 今天的主题是要探讨优化器(Optimizer)对模型学习的影响,有关优化器该用哪个好...

[Day 27] Edge Impulse + BLE Sense实现影像分类(上)

在前面章节已介绍如何让Arduino Nano 33 BLE Sense(以下简称BLE Sense...