【C#】Trello カード操作いろいろ

Uncategorized
639 words

Manatee.Trello ライブラリを使っていろいろな操作をしていきます。

もち備忘録です!

環境

  • Windows 11 Home 21H2
  • Visual Studio Community 2022
  • .NET 6.0
  • Manatee.Trello 4.4.2

認証トークン取得

カードを作成するには、APIキーと認証トークンが必要です。

次のページ からAPIキーと認証トークンを取得。

APIキー

認証トークン

そのままトークンリンクから認証トークンを作成します。

カード作成

1
2
3
4
5
6
7
8
9
10
11
12
13
using Manatee.Trello;

TrelloAuthorization.Default.AppKey = "[your application key]";
TrelloAuthorization.Default.UserToken = "[your user token]";

ITrelloFactory factory = new TrelloFactory();

var list = factory.List("[your list id]");

var card = await list.Cards.Add("カード名");
card.Description = "カード説明文";

await TrelloProcessor.Flush();

リストIDの調べ方

URLに「.json」と入力するとJSON型式で表示されるので、リスト名で検索する。

リスト移動

1
2
3
4
5
6
7
8
9
10
11
12
13
using Manatee.Trello;

TrelloAuthorization.Default.AppKey = "[your application key]";
TrelloAuthorization.Default.UserToken = "[your user token]";

ITrelloFactory factory = new TrelloFactory();

var card = factory.Card("[your card id]");

var list = factory.List("[your list id]"); // 移動先リスト
card.List = list;

await TrelloProcessor.Flush();

カードIDの調べ方

ライブラリを使っている場合は、URLのIDで指定できます。

リストIDを調べたときと同じように「.json」を指定して調べることもできます。カードの場合は先頭のIDがカードIDになります。

リマインダー設定

ライブラリが非対応でした。

公式リファレンス にも載っていなかったので、自己責任でお願いします。

  • start -> 開始日
  • due -> 期限
  • dueReminder -> リマインダー

リマインダーの値は次を設定してください。

  • “-1”:なし
  • “0”:期限になったとき
  • “5”:5分前
  • “10”:10分前
  • “15”:15分前
  • “60”:1時間前
  • “120”:2時間前
  • “1440”:1日前
  • “2880”:2日前

上記以外も設定できますが、カードのリマインダー設定には表示されません。一応設定はできてるみたい。

C#

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
using Microsoft.Net.Http.Headers;
using System.Text;
using System.Text.Json;

var parameters = new Dictionary<string, string>()
{
{ "key", "APIKey" },
{ "token", "APIToken" },
};

var queryString = await new FormUrlEncodedContent(parameters).ReadAsStringAsync();

var httpRequestMessage = new HttpRequestMessage(HttpMethod.Put,
$"https://api.trello.com/1/cards/{cardId}?{queryString}")
{
Headers = { { HeaderNames.Accept, "application/json" }, }
};

var payload = new Dictionary<string, string>()
{
{ "start", "2022-08-15T00:00:00+09:00" }, // 開始日
{ "due", "2022-08-16T00:00:00+09:00" }, // 期限
{ "dueReminder", "2880" }, // リマインダー "-1":なし、"0":期限になったとき、"5":5分前、"10":10分前、"15":15分前、"60":1時間前、"120":2時間前、"1440":1日前、"2880":2日前
};

httpRequestMessage.Content = new StringContent(JsonSerializer.Serialize(payload), Encoding.UTF8, "application/json");

var httpClient = new HttpClient();
await httpClient.SendAsync(httpRequestMessage);

Python

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
import requests

url = "https://api.trello.com/1/cards/{cardId}"

headers = {
"Accept": "application/json"
}

query = {
'start': "2022-08-15T00:00:00+09:00", # 開始日
'due': "2022-08-16T00:00:00+09:00", # 期限
'dueReminder': "2880", # リマインダー "-1":なし、"0":期限になったとき、"5":5分前、"10":10分前、"15":15分前、"60":1時間前、"120":2時間前、"1440":1日前、"2880":2日前
'key': 'APIKey',
'token': 'APIToken'
}

response = requests.request(
"PUT",
url,
headers=headers,
params=query
)

print(response.text)