Kaonavi.NET 3.0.0

dotnet add package Kaonavi.NET --version 3.0.0
                    
NuGet\Install-Package Kaonavi.NET -Version 3.0.0
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Kaonavi.NET" Version="3.0.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Kaonavi.NET" Version="3.0.0" />
                    
Directory.Packages.props
<PackageReference Include="Kaonavi.NET" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Kaonavi.NET --version 3.0.0
                    
#r "nuget: Kaonavi.NET, 3.0.0"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package Kaonavi.NET@3.0.0
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=Kaonavi.NET&version=3.0.0
                    
Install as a Cake Addin
#tool nuget:?package=Kaonavi.NET&version=3.0.0
                    
Install as a Cake Tool

Kaonavi.NET

NuGet (stable version) GitHub releases (including pre-releases) .NET CI codecov CodeFactor License

Unofficial Kaonavi Library for .NET

現状、メンテナーがカオナビAPIの利用権を持っていないため、実際の動作確認ができていません。 ご利用の際は自己責任でお願いいたします。

Install

# Package Manager
> Install-Package Kaonavi.NET

# .NET CLI
> dotnet add package Kaonavi.NET

Usage

事前に公式APIドキュメントの手順に従い、Consumer KeyとConsumer Secretを取得してください。

Basic

using Kaonavi.Net;
using Kaonavi.Net.Entities;

var client = new KaonaviClient(new HttpClient(), "Your Consumer Key", "Your Consumer Secret");

// アクセストークンは最初にAPIを呼び出す際に自動で取得されます

// 所属ツリー 一括取得APIを呼び出す
var departments = await client.Department.ListAsync();

// メンバー情報 登録APIを呼び出す(戻り値はタスクID)
int taskId = await client.Member.CreateAsync(new MemberData[]
{
    new MemberData(
        Code: "A0002",
        Name: "カオナビ 太郎",
        NameKana: "カオナビ タロウ",
        Mail: "taro@kaonavi.jp",
        EnteredDate: new DateOnly(2005, 9, 20),
        RetiredDate: null,
        Gender: "男性",
        Birthday: new DateOnly(1984, 5, 15),
        Department: new MemberDepartment("1000"),
        SubDepartments: new MemberDepartment[] { new MemberDepartment("1001") },
        CustomFields: new CustomFieldValue[] { new CustomFieldValue(100, "A") }
    ),
});

// 上記APIがサーバー側で処理されるまで待つ
await Task.Delay(10000);

// タスク進捗状況 取得APIを呼び出す
var progress = await client.Task.ReadAsync(taskId);
if (progress.Status == "NG" || progress.Status == "ERROR")
{
    // エラー処理
}

Dependency Injection

クライアントはIKaonaviClientで抽象化されているため、DIコンテナを使用して登録することができます。

コンソール アプリの完全なサンプルはConsoleAppSampleを参照してください。

// Microsoft.Extensions.DependencyInjectionでの使用例
hostBuilder.ConfigureServices((context, services) =>
{
    string consumerKey = context.Configuration["Kaonavi:ConsumerKey"];
    string consumerSecret = context.Configuration["Kaonavi:ConsumerSecret"];
    // HttpClientを依存性注入しつつ、KaonaviClientをDIに登録
    // 要 Microsoft.Extensions.Http パッケージ
    services.AddHttpClient<IKaonaviClient, KaonaviClient>((client) => new(client, consumerKey, consumerSecret));

    services.addTransient<IYourService, YourService>();
});

public interface IYourService
{
    public async Task DoSomethingAsync();
}

// カオナビAPIを呼び出すサービス
public class YourService : IYourService
{
    private readonly IKaonaviClient _client;

    // コンストラクターで依存性を注入
    public YourService(IKaonaviClient client) => _client = client;

    public async Task DoSomethingAsync()
    {
        var departments = await _client.Department.ListAsync();
        // ...
    }
}

Source Generator

Kaonavi.NETでは、独自のクラスからシート情報への生成を簡単にするためのソース ジェネレーターを提供しています。

Visual Studio 2022 (バージョン 17.3)以降、もしくは Visual Studio Code の C# 拡張機能などのMicrosoft.CodeAnalysis.CSharp 4.3.0以降に対応したエディターが必要です。

using Kaonavi.Net;
using Kaonavi.Net.Entities;

// 1. SheetSerializable属性を付与したpartialクラス(recordクラスも可)を定義
[SheetSerializable]
public partial class Position : ISheetData // 2. ISheetDataを実装
{
    public string Code { get; set; } // 3. ISheetData.Codeプロパティを実装
    [CustomField(100)] // 4. カスタムフィールドとなるプロパティにCustomField属性を付与
    public string Name { get; set; }

    // 以下のメソッドが自動生成される
    public IReadOnlyList<CustomFieldValue> ToCustomFields() => new CustomFieldValue[]
    {
        new CustomFieldValue(100, Name),
    };
}

var positions = new Position[]
{
    new Position { Code = "A0001", Name = "社長" },
    new Position { Code = "A0002", Name = "部長" },
};

var client = new KaonaviClient(new HttpClient(), "Your Consumer Key", "Your Consumer Secret");

// ISheetDataを実装することで、シート情報に変換する拡張メソッドが利用可能
// IEnumerable<ISheetData>.ToSingleSheetData(): 単一レコードのシート情報に変換
// IEnumerable<ISheetData>.ToMultipleSheetData(): 複数レコードのシート情報に変換
var sheetDataList = positions.ToSingleSheetData();
// シート情報 一括更新APIを呼び出す
var taskId = await client.Sheet.ReplaceAsync(i, sheetDataList);

Development & Contributing

CONTRIBUTING.mdを参照してください。

There are no supported framework assets in this package.

Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
3.0.0 198 5/1/2025
2.0.0 188 4/27/2024
2.0.0-beta.2 98 4/27/2024
2.0.0-beta.1 93 4/23/2024
1.2.0 165 3/20/2024
1.1.0 228 6/9/2023
1.0.1 383 2/9/2023
1.0.0 468 10/7/2022
0.3.0 505 5/26/2022
0.2.0 575 11/5/2021
0.1.0 406 6/10/2021