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

## 目的
Googleフォームで社内の問合せを受けています。
対応漏れがないように、GASでTrelloに自動でカードを追加します。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/252317/a4427f1b-b437-1696-7968-1a307e5e4460.png" width=60%>


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

スプレッドシートはこんな感じです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/252317/359a0ada-605d-63f0-6580-87e4413c9d3d.png)

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

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


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

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/252317/5641c190-3047-3797-dd21-2fa8e6625101.png" width=60%>

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

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/252317/0e447373-fd78-d727-cb34-f10bb2f71f25.png" width=60%>

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

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/252317/444bcc35-8ce6-f978-9f50-037840790412.png" width=60%>

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

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

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

``````js: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);

}

```

### トリガー設定
以下の通り設定します。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/252317/5cc01e0a-3a97-350d-a673-4f2433575345.png" width=60%>


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

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/252317/bc35e328-a763-6898-94e9-2e01742e544b.png" width=60%>