Help us understand the problem. What is going on with this article?

選択範囲テキストをTrelloにカード作成したかった2(しかも成功したnotificationが欲しい)

More than 1 year has passed since last update.

前回

とりあえずTrelloにカードを投稿するコマンドを作るまで作れるようになりました。
https://qiita.com/a_a_s/items/6e3c28d7245c7f9ce427

前回の最終結果として以下のコマンドが得られたわけで

curl -X POST "https://trello.com/1/cards?key=<APIKey>&token=<Token>&idList=<先ほど取得したListのID(上の"ccccccc"に当たる)>" -d "name=テストのカードだよ"| jq

ただこれだとカードが登録されても、反応が全くないのでわからないのが不便だなぁと思いまして、今回はこいつをnode.jsで書き直して、responseを受け取りたい。
ちなみにnode.jsを用いたのはなんとなくです。

やりたいこと

1 node.jsを使いたい
2 引数を使ってみたい
3 request投げたい
4 notification出したい
5 ショートカット作成

node.js を使えるようになる

必要なものinstall

https://qiita.com/kyosuke5_20/items/c5f68fc9d89b84c0df09
こちら参照しました。
すでにこういった手順は他の方がまとめてくださっているおかげで、何かに手を出す際にはとても敷居が低くなったように感じます。感謝。
(source .bash_profile 忘れずにやりましょう。 )

project作成

https://qiita.com/maitake9116/items/7825d90c09f3e2f87dea
上記を参照してnpmプロジェクト(?)を作成します。
今回は2~4の欲望により下記の3種をinstall

  • commander
  • request
  • node-notifier

versionは今回はあまり考えずにとってきました。十中八九基本の機能しか使わないので。
install方法などについては今度調査を進めようかと考えています。npmなんぞもそうですし、
saveオプションとか、あまりよくわかっていないので。
まだまだdocumentを読む日々が続きそうです。。。

引数を使いたい

さて、先ほどinstallしたcommanderについて。
今回はさして必要ではないのだけれど、気になってみたから入れてみただけです。
ちょろちょろみてみたけれど、version, option, usage, 引数のマスト可否までやってくれるやつらしい。

今回はcard登録だけなので、-c, --card というオプションをつけました。引数はマストで。

// set command
var program = require("commander");
program
  .version('0.0.1', '-v, --version')
  .usage('[option] <cardName>')
  .option('-c, --card <cardName>', 'Add Card Name')
  .parse(process.argv);

今回はaddCard.jsというファイルで作成したいのですが

node addCard.js -c hoge

とやると

program.card

で"hoge"が取れる寸法です。

request投げたい

こちらも先ほどinstallしたrequestを用いると、最低限の情報は投げられるようになりました。
ちなみにAPI_KEYとTOKENは定数でファイルの上の方に定義しました。
```
// set request
const request = require('request');
const URL = "https://trello.com/1/cards?key=" + API_KEY + "&token=" + TOKEN + "&idList=" + LIST_ID;
var options = {
uri: URL,
form: {
name: CARD_NAME
},
json: true
};

request.post(options, function(error, response, body) {
if (!error && response.statusCode == 200) {
// Success notify したい
} else {
// Error notify したい
}
});
```

notifyしたい

全く記事にして意味があるのかと言われそうですが、先ほどのnode-notifierを用いるとサクッとできます。
上記のrequest.postの条件分岐を次のようにしました。

request.post(options, function(error, response, body) {
  if (!error && response.statusCode == 200) {
    notifier.notify({
      title: SUCCESS_TITLE,
      message: REGISTER_MSG + CARD_NAME,
      wait: true
    });
  } else {
      notifier.notify({
        title: ERROR_TITLE,
        message: REGISTER_MSG + CARD_NAME,
        wait: true
    });
  }
});

ちなみに私はmacos10.14.3でしたので、 node-notifier はそのまま Growl を install することなく用いることができました。
ここでの SUCCESS_TITLE, ERROR_TITLE はいずれもファイルの上の方で定義しました。
先ほどのcommanderを用いてこの辺りの変数も適宜変えられるようにできたらなぁとは思っているのですが、今回ので正直欲しい機能はついてしまっているのでやらない気がします。。。

ショートカットで登録できるように。

さて、最後にショートカットできるようにしましょう。ここまできましたし。
下記を参照してAutomatorにまずは登録しましょう。
http://mzgkworks.hateblo.jp/entry/shell-automator
また今回は入力の引き渡し方法は「引数として」としました。

また何故かnodeのpathを読めていないようで、Automatorからnodeコマンドを使えない(command not found)でしたので下記のようにシェルを入力しました

source .bash_profile
cd /path/to/trello/project/
node addCard.js -c "$*"

あとは
https://qiita.com/kazuooooo/items/eefd88a2a852a5daf08d
のように先ほど作ったスクリプトをショートカットに登録してあげれば終わりです。

最後の方力つきでだいぶ雑になってしまいましたが、堪忍してください。

a_a_s
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした