谷歌文档's脚本

Google Doc's Script

本文关键字:脚本 文档 谷歌      更新时间:2023-09-26

让我首先说这是我第一次使用谷歌脚本。

我有一个我通过搜索找到的表格功能,经过一点编辑后就开始工作了。它会根据菜单选择,在一行中发送一封关于状态更新的电子邮件。我还希望它在发送电子邮件时将文本添加到标题为"发送的电子邮件"的列中(如果重要的话,请选择O列)。

这是当前的脚本:

function getColIndexByName(colName) {
  var sheet = SpreadsheetApp.getActiveSheet();
  var numColumns = sheet.getLastColumn();
  var row = sheet.getRange(1, 1, 1, numColumns).getValues();
  for (i in row[0]) {
    var name = row[0][i];
    if (name == colName) {
      return parseInt(i) + 1;
    }
  }
  return -1;
}
function emailStatusUpdates() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var row = sheet.getActiveRange().getRowIndex();
  var userEmail = sheet.getRange(row, getColIndexByName("email")).getValue();
  var subject = "Helpdesk Ticket #" + row;
  var body = "We've updated the status of your ticket.'n'nStatus: " + sheet.getRange(row, getColIndexByName("Status")).getValue();
  body += "'n'nNotes: " + sheet.getRange(row, getColIndexByName("Notes")).getValue();
  body += "'n'nResolution: " + sheet.getRange(row, getColIndexByName("Resolution")).getValue();
  MailApp.sendEmail(userEmail, subject, body, {name:"Help Desk"});
}
function onOpen() {
  var subMenus = [{name:"Send Status Email", functionName: "emailStatusUpdates"}];
  SpreadsheetApp.getActiveSpreadsheet().addMenu("Help Desk Menu", subMenus);
}​

这似乎很琐碎。您可以对emailStatusUpdates函数中的某个范围使用setValue方法。

var confirmText = "Email sent at " +
  Utilities.formatDate(new Date(), Session.getScriptTimeZone(),
                       "yyyy-MM-dd HH:mm:ss")
sheet.getRange(row, getColIndexByName("email date")).setValue(confirmText);

我使用您的函数getColIndexByName来避免在代码中对"O"列进行硬编码。您必须确保O列的标题与我们传递给此函数的内容相匹配。