Don't Let AI Make You Forget "Dumb" Tech

Especially when it can enhance AI. Take the case of Google's underrated Apps Script.

[image created with Dall-E 3 via ChatGPT Plus]

This issue is brought to you by Packback

Welcome to AutomatED: the newsletter on how to teach better with tech.

Each week, I share what I have learned — and am learning — about AI and tech in the university classroom. What works, what doesn't, and why.

In this week’s piece, I give an example where old, “dumb” tech outdoes fancy new AI. I then show you how to leverage this sort of non-AI tech — using the underrated Google Apps Script — to improve your workflow by connecting your Gmail to your Google Docs via an automated process.

💡 Idea of the Week:
Remember Old, “Dumb” Tech

In staying abreast of the latest AI news, tools, and techniques, I read a wide range of sources.

If you are a professor like me, then I recommend that you do, too, because it is essential for you to have a good grip on what people in your role or field are using AI to do right now, as well as on what students expect about AI and on what AI will be able to do in the future. I discuss this at length in our Premium Guide to designing assessments and assignments in the age of AI.

This past week, I was reading about someone’s disappointment in the capabilities of Google’s Gemini (the tool formerly known as ‘Bard’; click here to read my explainer if all the names are confusing you). The task that they put to Gemini had several steps. In a nutshell, they told it to:

  1. Go to their inbox and look for all emails where they received cash back from their credit card, using a specific subject line and sender name to find them

  2. Give them a list of all the amounts of cash they received

  3. Sum these amounts

The person reported that Gemini successfully found all but one of the values, reported accurately the ones it did find, and then generated a false sum. The person — who I won’t name here — concluded that Gemini is “trying” but not “perfect enough” to be useful.

The problem, as I pointed out, is that the task that the person put to Gemini is one that can already be reliably and efficiently completed by other parts of Google Workspace (Gmail and Google Sheets).

It’s like demanding teenaged Albert Einstein or Grace Hopper to do something I could do when I was a child, and then getting annoyed when they get bored or otherwise aren’t well-suited to the task. There’s nothing about the task that relies on what makes them special, and what makes them special decreases the odds they do a good job with such a task!

For instance, this person could set a Gmail filter to Label all of their cash back emails as the emails arrive; they could use a simple script in Google Apps Script to send the values to a Google Sheet; and then they could use Sheets to dynamically sum them as they arrive (i.e., as the values arrive, append the values to a formula).

Now, if there were an aspect of this experiment that Gemini were needed to complete, the person would want to introduce it at that point in the workflow, like after Sheets has done its work. Perhaps, say, they want to use Gemini generate a report in a Doc based on the information in the Sheet and some additional information they supply in the Doc.

The lesson: remember old, “dumb” tech, especially when it can do parts of a workflow or process better than fancy AI can. Your goal should be to leverage all of the tools at your disposal to achieve your goals in a way that minimizes costs (financial, time, energy), not offload everything onto costly AI ill-suited to the task.

Below, I illustrate my point with an example of a basic but useful way to use Google Apps Script to automatically move the content of certain emails in Gmail to a Google Doc.

👀 What to Keep an Eye on:
Our April Webinar (on AI Training?)

Three weeks ago, we hosted our first AutomatED webinar. This one was 2 hours long, covered custom GPTs in depth, and enabled our participants to begin to build their own. Some of our attendees were interested in GPTs to help with their own pedagogy, some were creating GPTs to assist other educators, and some were interested in ways to ease access to their companies’ content.

We are already planning the next webinar. We are thinking it will be an hour in length and occur on a Saturday at noon Eastern Time in April.

If you are interested, please answer the poll below so we have a better sense of which topic(s) we should cover:

What topic should we cover in our April 2024 webinar?

Login or Subscribe to participate in polls.

📬 From Our Partners:
An AI Writing and Grading Assistant

Packback is the leading Instructional AI platform. Our platform acts as a “Digital TA”, providing every student with an AI writing tutor, and every instructor an AI grading assistant. Our Digital TA powers our award-winning discussion platform, Packback Questions, and our AI-supported writing assignment platform, Deep Dives.

Through Packback’s AI grading assistance, educators are able to spend more time teaching and connecting, and less time correcting and doing administrative work. Through Packback’s AI-powered feedback, students are able to receive feedback in real time, allowing them to strengthen their writing and build confidence.

We teach students how to write, never writing for them.

To learn more about Packback or to schedule a demo, click here.

🧰 A “Dumb” Tech Use Case for Your Toolbox:
Gmail to Docs Automation

In our last Premium Tutorial, I explained how to better integrate Gemini — Google’s competitor to ChatGPT — in Google Workspace. Natively, there are a few options, but each leaves something to be desired, so I showed you how you can take it to the next level.

In this section, I explain how you can improve your workflow by deploying an automation that was a part of my last Tutorial. It is an automated process that moves the content of emails you receive and label in your Gmail to a dedicated Google Doc.

This automation, relying on Google Apps Script, is highly useful for a range of situations, and it can be customized to further expand its utility. For instance, you might want to store a certain subset of your emails’ content in a Doc, analyze them there or connect their content to your Sheets, or collaborate on them with your colleagues.

On Wednesday of this week, I will release another Tutorial to leverage this sort of automation with Zoom’s AI Companion to significantly improve one-on-one meetings, like those between professors and students.

Let’s dive in!

Step One

Start by creating two Labels in your Gmail:

  1. An “unprocessed” Label. You will apply this Label to those emails whose content you want sent over to Google Docs. To apply the Label, you can manually drag emails into this Label as they arrive, or you can create a rule for a filter to do so.

  2. A “processed” Label. Our automated process will move emails from the prior Label to this one once they have been processed.

Here are two that I created (“New Emails” and “Processed Emails”):

You create them by clicking the ‘+’ symbol next to the Labels header in the left sidebar of your Gmail.

Step Two

Next, create or locate a Google Doc where you want to send the content of the emails that you move to “New Emails” as they arrive (or those which will be moved by a filter rule).

Note the part of the URL for this Doc between the ‘/’ before ‘edit’ and the ‘/’ after ‘document/d’. This is your Doc ID.

Step Three

Now open the Google Apps Script editor. Google Apps Script is a native way to integrate Google apps like Docs and Gmail — it is built into Google Workspace and it is secure.

Click “New project” in the upper left corner:

By default, there will be some incomplete function code on the screen:

Delete it and replace it with this code (you can read the notes after each ‘//’ to understand what each part is; below, I will explain what you need to modify):

function appendEmailsToDoc() {

var labelName = 'UNPROCESSED LABEL HERE'; // Replace with your "unprocessed" label
var processedLabelName = 'PROCESSED LABEL HERE'; // Replace with your "processed" label name
var docId = 'GOOGLE DOC ID HERE'; // Replace with your Google Doc ID

// Access the Gmail labels
var label = GmailApp.getUserLabelByName(labelName);
var processedLabel = GmailApp.getUserLabelByName(processedLabelName);
var threads = label.getThreads();

// Open the Google Doc
var doc = DocumentApp.openById(docId);
var body = doc.getBody();

// Loop through each email thread under the "unprocessed" label
for (var i = 0; i < threads.length; i++) {
var messages = threads[i].getMessages();

// Loop through each message in a thread
for (var j = 0; j < messages.length; j++) {
var message = messages[j];

// Append email details to the doc
body.appendParagraph('From: ' + message.getFrom());
body.appendParagraph('Subject: ' + message.getSubject());
body.appendParagraph('Date: ' + message.getDate());
body.appendParagraph('Email Body: ');

// Split the email content by line breaks and append each line as a separate paragraph
var contentLines = message.getPlainBody().split('\n');
for (var k = 0; k < contentLines.length; k++) {
if (contentLines[k].trim() !== '') {
body.appendParagraph(contentLines[k]);
}
}

// Append a horizontal rule a gap to visually separate the email content
body.appendHorizontalRule();
body.appendParagraph("");

}

// After adding content to the doc, mark the thread as processed
threads[i].addLabel(processedLabel); // Apply the "processed" label
threads[i].removeLabel(label); // Remove the "unprocessed" label
}
}

At the top, you’ll need to swap out three simple bits of text: UNPROCESSED LABEL HERE, PROCESSED LABEL HERE, and GOOGLE DOC ID HERE. Replace them with your exact unprocessed Label, processed Label, and Doc ID, respectively.

Then save the project via the floppy disk button at the top of your screen.

Next, after you have at least one email in your Gmail with your unprocessed Label applied to it (again, you can manually drag individual emails into the Label to apply it to them, or you can create a filter rule), run the script via the “Run” button at the top of the screen, in order to test it.

Google will ask you to confirm that you want to allow the script to have access to your data:

Click “Review permissions,” select the Google account you are using, and it will display this screen:

Press “Advanced” and the following will display (with your email address in place of ours, and with “Untitled project” or your project name in place of “EXPERIMENT”):

Click “Go to [your project name]” then click “Allow.”

The script will then produce the content of the email at the bottom of the Doc you chose, as well as a horizontal line below it, with white space after it.

It will also move the email from the unprocessed Label (i.e., remove the unprocessed Label from it) to the processed Label (i.e., apply the processed Label to it).

You can rename the script as you please. Here is mine:

Step Four (optional)

If you want your script to run automatically, and move emails from your unprocessed Label to the Doc and next to the processed Label each hour, day, or whatever, you can follow these further instructions.

Go back to the Google Apps Script editor. Click on the project that you created above. Then, on the left sidebar, click the clock icon (⏰) to open "Triggers":

Click on the big blue "+ Add Trigger" at the far bottom right of your screen. Choose the appendEmailsToDoc function to run, set the event source to "Time-driven", and specify the frequency at which you want the script to execute:

A Caveat

Threads treated as Singles: This solution assumes that you are fine with processing all messages in a thread at once. If your threads can contain a mix of processed and unprocessed messages, you might need a more granular approach.

Concluding Remarks

As noted above, you can use this script for a range of purposes. For instance, you could use it to gather emails of a type for recordkeeping or further analysis or collaboration. Or you could use it to leverage the greater power of Gemini in Docs to respond to emails received in Gmail that are answerable by information in your Docs, as I showed in our last Premium Tutorial. Or you could use it to gather and actionize Zoom-generated Meeting Summaries of your student meetings, as we will show in our Premium Tutorial this Wednesday.

That’s the power of dumb tech!

By the way, if you have a more complicated use case or are struggling to make this work, reach out to us. Helping folks like you is what we do!

Have you tried out our course design GPT? Give it a try, if you have ChatGPT Plus! It can produce assignments, assignment sequences, rubrics, and AI course policies. We have designed it to be especially effective when it comes to pedagogical issues related to AI.

Remember, you can even get it involved in any other GPT conversation you are having, if you @ it!

We just got our first rating this week after OpenAI rolled out the rating system. We are constantly working to improve it, so please give it a rating to tell us how it performs.

✨ How to Access AutomatED Premium

To get access to Premium, you can upgrade for $5/month or $50/year, or get one free month for every two (non-Premium) subscribers that you refer to AutomatED. The price will be going up in March 2024.

To get credit for referring subscribers to AutomatED, you need to click on the button below or copy/paste the included link in an email to them.

(They need to subscribe after clicking your link, or otherwise their subscription won’t count for you. If you cannot see the referral section immediately below, you need to subscribe first and/or log in.)