Google Apps 脚本 | Switch Case 仅选择默认选项

Posted

技术标签:

【中文标题】Google Apps 脚本 | Switch Case 仅选择默认选项【英文标题】:Google Apps Script | Switch Case selecting default option only 【发布时间】:2014-08-02 06:30:59 【问题描述】:

我有一个很好的表单,用户可以在其中提交数据。为了学习,我只有一个表单域,它是一个带有 2 个选项的单选按钮。生成的电子表格只有 2 个列,“时间戳”和“名称”。

我的脚本的目标是评估表单提交中的事件驱动数据,然后更改变量中的值,以便可以将电子邮件发送给不同的用户。案例永远不会评估,结果始终是默认值。这是我的脚本,其中来自其他来源:Digital Inspiration。

函数初始化() var triggers = ScriptApp.getScriptTriggers(); for(触发器中的变量 i) ScriptApp.deleteTrigger(triggers[i]); ScriptApp.newTrigger("SendGoogleForm") .forSpreadsheet(SpreadsheetApp.getActiveSpreadsheet()) .onFormSubmit() .create(); 函数 SendGoogleForm(e) 试试

var subject = "Form Test";  

var s = SpreadsheetApp.getActiveSheet();
var headers = s.getRange(1,1,1,s.getLastColumn()).getValues()[0];    
var message = "";    

// Credit to Henrique Abreu for fixing the sort order

for(var i in headers) 
  message += headers[i] + ' :: '+ e.namedValues[headers[i]].toString() + "\n\n"; 


message += headers[1] + "\n";
message += e.namedValues[headers[1]]; \\ I left this in to check datavalues in the email
message += e.namedValues[headers[1]]; \\ I left this in to check datavalues in the email
message += e.namedValues[headers[1]] + "\n";

var email = e.namedValues[headers[1]].toString; \\ I would ASSUME that this would store \\the spreadhseet data to the variable email,

但它似乎没有这样做。

message += "Sheet URL :: " + SpreadsheetApp.getActiveSpreadsheet().getUrl() + "\n";

     switch (email)
    
        case "basdf":
            email = "email1@hotmail.com";
            break;
        case "dfdsa":
            email = "email2@hotmail.com";
            break;
        default:
            email = "email3@hotmail.com";
            break;
    




MailApp.sendEmail(
  to: email,
  subject: subject,
  body: message,
  )
    catch (e) 
Logger.log(e.toString());   
 

【问题讨论】:

【参考方案1】:

试试这个 sn-p。它使用表单提交的值检查标题列名称,然后将相应的值分配给电子邮件变量。

var email = "";

for(var i in headers) 
  if (headers[i] == "email") 
     email = e.namedValues[headers[i]].toString();
  
  message += headers[i] + ' :: '+ e.namedValues[headers[i]].toString() + "\n\n"; 


switch (email)  
        case "basdf":
            email = "email1@hotmail.com";
            break;
        case "dfdsa":
            email = "email2@hotmail.com";
            break;
        default:
            email = "email3@hotmail.com";
            break;
    

【讨论】:

以上是关于Google Apps 脚本 | Switch Case 仅选择默认选项的主要内容,如果未能解决你的问题,请参考以下文章

Google Apps脚本:查找数组中每个项目的位置

是否可以使用 Apps 脚本运行 Google 表格插件?

Google Apps 脚本:Google 表格分组

如何通过 Apps 脚本在 Google 表格中“清除格式”

使用 Google BigQuery / Apps 脚本为插入 Google 表格的数据添加时间戳

如何使用 Google Apps 脚本执行 API + Java 创建 Google 表单?