0

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

我有一个谷歌表格供人们填写我们社区的新手。显然,它提供了一个 Google Docs 电子表格。(这是一个链接,指向刚刚编辑以屏蔽一些个人数据的工作表副本:

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

)

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

我现在需要处理的管理任务是查看所有回复并找出那些说过——例如——他们有兴趣加入“帮助之手”组的成员,复制他们的电子邮件地址(它位于 X 列中)并将其粘贴到该组的 Google Groups 注册表单中。

这是可以理解的乏味。特别是因为——再一次——我们有大约 15 个需要填充的 Google 群组列表。

如果我可以编写一个小 Google Apps 脚本,它会遍历工作表中的数据,并给我一个逗号分隔的列表,列出所有符合正确标准的电子邮件地址,这样我就可以复制——并将其粘贴到 Google Group 注册页面中。

用简单的英语,正则表达式应该这样说: - IF 列 F 包含 Helping Hands - AND IF 列 G 不包含 Yes - THEN 将列 X 的内容添加到导出的字符串,后跟逗号 - 对中的每一行重复工作表。

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

第一步,我已经确定以下正则表达式将满足我的需求:

/(^|, )伸出援助之手($|, )/

不过,我不确定如何扩充它以包含第二个必需的 IF 语句。我也不知道如何写 THEN 语句。而且——正如我上面所说——我不知道如何触发这一切。

提前感谢任何可以提供帮助的人!塞威克利的新人也谢谢你们!如果我能清除任何东西,请告诉我。

4

4 回答 4

1

您为什么不进一步设置一个表单提交触发器,该触发器读取组并使用(尚未试验的)Groups Services for Apps 脚本自动添加它们?

这样的脚本实现起来并不难,也许你应该查看用户指南教程

于 2012-07-10T01:36:44.923 回答
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])
}

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

于 2012-07-09T16:46:22.487 回答
0

你不知道这最终解决了我是多么令人难以置信。感谢@Sirik 一百万次坚持使用它并编写代码并帮助我调试它。它完全按照我的意愿去做,它只是世界上最酷的事情,让它完全按照我的意愿去做。

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

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!")
}
于 2012-07-20T21:40:22.473 回答
0

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

于 2014-10-02T17:11:35.350 回答