Googleフォームで問合せを受け付け、Trelloにカードを追加する


目的

Googleフォームで社内の問合せを受けています。
対応漏れがないように、GASでTrelloに自動でカードを追加します。

概要

googleフォームを作成し、問合せ内容をスプレッドシートに書き出します。
書き出された内容を元にして、TrelloのAPIを使って、追加したいリストにpostします。

スプレッドシートはこんな感じです。

TrelloのAPIを使うための認証情報

今回のTrelloのAPIを使うためには、認証情報としてAPIキーとトークンとリストIDが必要です。

まず、以下のURLにアクセスすると、APIキーを取得できますのでコピーして下さい。
https://trello.com/1/appKey/generate
次に、アプリケーションの「認証」を押して下さい。

アクセス許可が求められたら許可して下さい。

そして、認証するとAPIトークンを取得できます。

ちなみに、curlを使うと簡単かと思うので、こちらの記事を参考に、自身のTrelloのAPIキー、トークン、リストIDを確認して下さい。
リストIDを確認するためには、上記のAPIキー、トークンの情報が必要です。
https://qiita.com/isseium/items/8eebac5b79ff6ed1a180

リストはTrelloの「未対応リスト」的なリストに追加すると良いと思います。

GASの内容

googleフォームを書き出したスプレッドシートからスクリプトを作成し、以下のコードを記述します。
項目は例ですので適宜修正して下さい。

addTrello.gs
function myFunction(e) {

  // 入力カラム名の指定
  var A_FROM_NAME ='タイムスタンプ';
  var B_FROM_NAME ='メールアドレス';
  var C_FROM_NAME ='氏名';
  var D_FROM_NAME ='所属部署/組織';
  var E_FROM_NAME ='件名/依頼分類';
  var F_FROM_NAME ='対応依頼内容';
  var G_FROM_NAME ='メーリングリスト利用範囲';
  var H_FROM_NAME ='対象システム';
  var I_FROM_NAME ='ファイル添付';
  var J_FROM_NAME ='承認者名';
  var K_FROM_NAME ='希望納期';
  var L_FROM_NAME ='備考';
  var Kaigyo = "\n";

  //問合せ内容を変数に格納

  var timeStamp = e.namedValues[A_FROM_NAME];
  var mailAdress = e.namedValues[B_FROM_NAME];
  var name = e.namedValues[C_FROM_NAME];
  var busho = e.namedValues[D_FROM_NAME];
  var bunrui = e.namedValues[E_FROM_NAME];
  var contents = e.namedValues[F_FROM_NAME];
  var mlHani = e.namedValues[G_FROM_NAME];
  var system = e.namedValues[H_FROM_NAME];
  var tenpu = e.namedValues[I_FROM_NAME];
  var Author = e.namedValues[J_FROM_NAME];
  var deadline = e.namedValues[K_FROM_NAME];
  var bikou = e.namedValues[L_FROM_NAME];

 //カードに追加する本文を格納

  var body = "■ メールアドレス" + Kaigyo + mailAdress + Kaigyo + Kaigyo
  + "■ 氏名"+ Kaigyo + name + Kaigyo + Kaigyo
  + "■ 所属部署"+ Kaigyo + busho + Kaigyo + Kaigyo
  + "■ 件名/依頼分類"+ Kaigyo + bunrui + Kaigyo + Kaigyo
  + "■ 対応依頼内容"+ Kaigyo + contents + Kaigyo + Kaigyo
  + "■ メーリングリストの利用範囲"+ Kaigyo + mlHani + Kaigyo + Kaigyo
  + "■ 対象システム"+ Kaigyo + system + Kaigyo + Kaigyo
  + "■ ファイル添付"+ Kaigyo + tenpu + Kaigyo + Kaigyo
  + "■ 承認者名"+ Kaigyo + Author + Kaigyo + Kaigyo
  + "■ 希望納期"+ Kaigyo + deadline + Kaigyo + Kaigyo
  + "■ 備考"+ Kaigyo;  

  // Trelloのカードのタイトル定義。期日を明確にするために期日を含めています。
  var titleTrello = "" + busho + "/" + name + "" + " 期日:" + deadline; // + " [分類:" + bunrui + "]";
  addTrelloCard(titleTrello, body);

}

function addTrelloCard(title,body) {

  // カード作成
  //取得したTrelloの情報を入力して下さい
  var api_key = "APIキー";
  var api_token = "トークン";
  var list_id = "リストID";

  var card_title = title;
  var card_description = body;

  var url = 'https://api.trello.com/1/cards/?key=' + api_key + '&token=' + api_token;
  var options = {
      'method' : 'post',
      'muteHttpExceptions' : true,
      'payload' : {
        'name'      : card_title,
        'desc'      : card_description,
        'due'       : '',
        'idList'    : list_id,
        'urlSource' : ''
      }
    }
    var response = UrlFetchApp.fetch(url, options);

}

トリガー設定

以下の通り設定します。

結果

このような形でカードが追加されます。
これで問合せ対応を漏れなく実施することができました!