如何在Google Apps脚本中创建逗号分隔的字符串

时间:2012-07-09 15:59:35

标签: google-apps-script

我需要很多这方面的帮助,但我认为这是一个对未来其他绿色程序员有帮助的程序。

我有一个谷歌表格供人们填写,这是我们社区的新功能。显然,它会提供Google文档电子表格。 (这里是指向刚刚编辑的工作表副本的链接,以删除部分个人数据:

https://docs.google.com/spreadsheet/ccc?key=0AjsoIob8dJfodG9WN0ZmWUE1ek9rc3JrVFpDQ0J0OGc

其中一个问题是您有兴趣加入我们的哪些小组。表格询问问题,然后允许用户检查新成员有兴趣加入的大约10个组中的哪一个。然后将数据输入到列表中,列出新成员想要加入单个单元格的所有组(即F列)。

我现在需要解决的管理任务是通过所有回复并撤出已经说过的成员 - 例如 - 他们有兴趣加入“帮助之手”小组,复制他们的电子邮件邮件地址(位于第X列)并将其粘贴到该论坛的Google网上论坛注册表中。

这是可以理解的乏味。特别是因为 - 再次 - 我们有大约15个需要填充的Google网上论坛列表。

如果我可以编写一个小的Google Apps脚本来查看表格中的数据并给我一个逗号分隔的列表,列出符合正确标准的所有电子邮件地址,那将是多么美妙的事情。只需将其复制并粘贴到Google网上论坛注册页面即可。

用简单的英语,正则表达式应该这样说: - 如果F栏包含帮助手 - AND IF列G不包含是 - 然后将列X的内容添加到导出的字符串,后跟逗号 - 对表格中的每一行重复。

所以这是问题所在: 1)我该怎么做? 2)这是如何触发的?

第一步,我已经确定以下正则表达式将为我提供所需内容:

/(^ |,)助手($ |,)/

我不知道如何增加它,包括第二个必需的IF语句。我也不知道怎么写THEN语句。并且 - 正如我上面所说 - 我不知道如何触发所有这些。

提前感谢任何可以提供帮助的人! Sewickley的新人也非常感谢你!如果我能搞清楚,请告诉我。

4 个答案:

答案 0 :(得分:1)

为什么不进一步设置一个表单提交触发器来读取组并使用(实验性的)Groups Services自动添加它们用于Apps脚本?

此类脚本实现起来并不困难,您可以查看user guidestutorials

答案 1 :(得分:0)

如果您以逗号分隔格式获取电子邮件地址列表,您似乎很高兴复制粘贴电子邮件地址列表。因此,您可以在需要时自行触发它。 您可以使用此代码段

var options = ['Helping Hands','Book Club',...]; // Add all 10 options here 
var GROUPS_COL = 5 ; //Column F
var COLG = 6; 
var EMAIL_COL = 23 ; //Column X
var emailList = ['', '','',''...] ; // 10 blanks

var data = SpreadsheetApp.openById('ID_HERE').getSheetByName('SheetName').getvalues(); 
for (var i = 1; i < data.length ; i++){
  for( var j = 0 ; j < options.length ; j++){
    if (data[i][GROUPS_COL].indexOf(options[j]) != -1 &&
        data[i][COLG] != 'Yes') {
      // The entry in row i+1 has checked option[j]
      if (emailList[j] != ''){
        emailList[j] += ',' ; // Add your comma
      }
      emailList[j] += data[i][EMAIL_COL]; 
    }
  }
}

/* Now you have your comma separated list in emailList */
for ( var i = 0 ; i < 10; i ++){
  Logger.log(option[i] + ':' + emailList[i])
}

显然,您必须调整此代码以满足您的需求,但会让您对如何继续进行公平的了解。代码尚未经过测试。

答案 2 :(得分:0)

你不知道我是多么令人难以置信,这终于成功了。非常感谢@Sirik坚持使用它并编写代码并帮助我调试它。它确实完全符合我的要求,它只是世界上最酷的事情,让它完全按照我的意愿行事。

为了后代或任何其他可能想要做与我正在做的事情类似的事情,这里是确切的代码,全部平滑,如实现的那样。你会看到我在最后添加了几个额外的位来通过电子邮件将日志发送给我并给我一个确认脚本已经运行的对话框(我不喜欢点击按钮的感觉而不是SEEING事情发生了。)

function Export_Groups_List() {

var options = ['1 & 2 Year Olds\' Playgroup','3 & 4 Year Olds\' Playgroup','Babies\' Playgroup','Book Club','Couples Night Out','Directory','Girls Night Out','Helping Hands','Membership','Newsletter','Serving Sewickley','Treasurer'];
var GROUPS_COL = 5; //This is column 5
var COLG = 6; //Column G
var EMAIL_COL = 23; //Column X
var emailList = ['', '', '', '', '', '', '', '', '', '', '', ''] //12 blanks

    var data = SpreadsheetApp.openById('___').getSheetByName('Master').getDataRange().getValues();
  for (var i = 1; i < data.length ; i++){
    for( var j = 0 ; j < options.length ; j++){
      if (data[i][GROUPS_COL].indexOf(options[j]) != -1 &&
         data[i][COLG] != 'Yes') {
        if (emailList[j] != ''){
          emailList[j] += ', ' ;
        }
        emailList[j] += data[i][EMAIL_COL];
      }
    }
  }
  for ( var i = 0 ; i < 12; i ++){
    Logger.log(options[i] + ': ' + emailList[i])
  }
  MailApp.sendEmail("matt@twodoebs.com", "Groups Export", Logger.getLog() + " \n\n" + 
                    "At your request, you've been added to this Sewickley Newcomers & Neighbors Google Group." + "\n\n" +
                    "Using Google Groups allows us to always have up to date e-mail lists, make sure that people don't get bombarded with messages they don't want, and facilitate smooth communication between our members. If you have any questions about how to use the Google Groups service with your Newcomers & Neighbors membership, please send an e-mail to SewickleyNAN@gmail.com." + "\n\n" + 
                    "Thank you and thanks for your participation!") ;

  Browser.msgBox("OK. Check your e-mail for the export list. doebtown rocks the house!")
}

答案 3 :(得分:0)

Evan Plaice提供了一个很好的Google Apps脚本,您可以在自己的电子表格中使用该脚本本质上呈现一个菜单,允许您使用“文本到列”功能转置列。 https://webapps.stackexchange.com/questions/22799/text-to-columns-conversion-in-google-spreadsheets