0

これについてはたくさんの助けが必要ですが、将来的には他のグリーンプログラマーにも役立つ手順だと思います。

私は、私たちの近所に新しい人々が記入するためのGoogleフォームを持っています。明らかに、GoogleDocsスプレッドシートにフィードします。(個人データの一部をブラックアウトするために編集されたばかりのシートのコピーへのリンクは次のとおりです。

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

)。

質問の1つは、どのグループに参加することに興味があるかということです。フォームは質問をし、ユーザーは約10のグループのどれに新しいメンバーが参加することに興味があるかを確認できます。次に、データは、新しいメンバーが1つのセル(列F)に参加したいすべてのグループをリストしたシートに送られます。

私が今取り組む必要のある管理タスクは、すべての応答を調べて、たとえば、「He​​lpingHands」グループに参加して自分の電子メールアドレスをコピーすることに興味があると言ったメンバーを引き出すことです(これは列X)にあり、そのグループのGoogleグループ登録シートに貼り付けます。

これは理解できる退屈なことです。特に、これらのGoogleグループリストのうち、入力する必要のあるものが約15個あるためです。

シート内のデータを調べて、正しい基準を満たすすべての電子メールアドレスのコンマ区切りのリストを表示してコピーできるようにする小さなGoogleAppsScriptを作成できたら素晴らしいと思います。そして-それをGoogleグループのサインアップページに貼り付けます。

平易な英語では、正規表現は次のようになります。-IF列FにHelping Handsが含まれている-ANDIF列GにYesが含まれていない-次に、列Xの内容をエクスポートされた文字列に追加し、その後にコンマを追加します-のすべての行に対して繰り返しますシート。

だからここに質問があります:1)どうすればこれを行うことができますか?2)これはどのようにトリガーされますか?

最初のステップとして、次の正規表現で必要なものが得られることをすでに確認しました。

/(^ |、)Helping Hands($ |、)/

ただし、2番目に必要なIFステートメントを含めるためにそれを拡張する方法はわかりません。また、THENステートメントの書き方もわかりません。そして、上で述べたように、これらすべてをトリガーする方法がわかりません。

助けてくれる人に事前に感謝します!そして、Sewickleyの新参者もありがとう!何か片付けられるかどうか教えてください。

4

4 に答える 4

1

さらに進んで、(まだ実験的な) Groups Services for Apps Scriptを使用して、グループを読み取り、自動的に追加するフォーム送信トリガーを設定してみませんか?

このようなスクリプトの実装はそれほど難しくありません。ユーザー ガイドチュートリアルを確認する必要があるかもしれません。

于 2012-07-10T01:36:44.923 に答える
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 Script を提供しています。これは、基本的に、「テキストから列へ」機能を使用して列を転置できるメニューをレンダリングします。 https://webapps.stackexchange.com/questions/22799/text-to-columns-conversion-in-google-spreadsheets

于 2014-10-02T17:11:35.350 に答える
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 に答える