মৌলিক ব্যবহার

.NET ক্লায়েন্ট লাইব্রেরির মৌলিক ব্যবহার নিম্নরূপ:

// Initialize a GoogleAdsConfig instance.
GoogleAdsConfig config = new GoogleAdsConfig()
{
    OAuth2Mode = OAuth2Flow.SERVICE_ACCOUNT,
    OAuth2SecretsJsonPath = "PATH_TO_CREDENTIALS_JSON",
    LoginCustomerId = "INSERT_LOGIN_CUSTOMER_ID_HERE"
};

// Initialize a GoogleAdsClient instance.
GoogleAdsClient client = new GoogleAdsClient(config);

// Create the required service.
CampaignServiceClient campaignService =
    client.GetService(Services.V25.CampaignService);

// Make calls to the service client.

ক্লায়েন্ট এবং পরিষেবাগুলি শুরু করুন

Google Ads API-এর সাথে ইন্টারঅ্যাক্ট করতে, প্রথমে একটি GoogleAdsClient কনফিগার ও ইনস্ট্যানশিয়েট করুন, এবং তারপর এটি ব্যবহার করে আপনার প্রয়োজনীয় নির্দিষ্ট API সার্ভিস ক্লায়েন্টগুলো তৈরি করুন।

একটি GoogleAdsClient ইনস্ট্যান্স তৈরি করুন

Google Ads API .NET লাইব্রেরির সবচেয়ে গুরুত্বপূর্ণ ক্লাস হলো GoogleAdsClient ক্লাস। এটি আপনাকে একটি পূর্ব-কনফিগার করা সার্ভিস ক্লায়েন্ট তৈরি করতে দেয় যা এপিআই (API) কল করার জন্য ব্যবহার করা যেতে পারে। একটি GoogleAdsClient অবজেক্ট কনফিগার করতে, একটি GoogleAdsConfig অবজেক্ট তৈরি করুন এবং প্রয়োজনীয় প্রোপার্টিগুলো সেট করুন। আরও জানতে কনফিগারেশন গাইডটি দেখুন।

// Initialize a GoogleAdsConfig instance.
GoogleAdsConfig config = new GoogleAdsConfig()
{
    OAuth2Mode = OAuth2Flow.SERVICE_ACCOUNT,
    OAuth2SecretsJsonPath = "PATH_TO_CREDENTIALS_JSON",
    LoginCustomerId = "INSERT_LOGIN_CUSTOMER_ID_HERE"
};

// Initialize a GoogleAdsClient instance.
GoogleAdsClient client = new GoogleAdsClient(config);

// Modify the GoogleAdsClient configuration afterwards if needed.
client.Config.LoginCustomerId = "INSERT_UPDATED_LOGIN_CUSTOMER_ID_HERE";

একটি পরিষেবা তৈরি করুন

GoogleAdsClient একটি GetService মেথড রয়েছে যা ব্যবহার করে একটি এপিআই সার্ভিস ক্লায়েন্ট তৈরি করা যায়।

CampaignServiceClient campaignService = client.GetService(
    Services.V25.CampaignService);
// Now make calls to CampaignService.

লাইব্রেরিটি একটি Services ক্লাস প্রদান করে যা সমস্ত সমর্থিত API সংস্করণ (যেখানে v25.1 এর মতো ছোটখাটো রিলিজগুলো তাদের প্রধান সংস্করণের enum, Services.V25 ব্যবহার করে) এবং পরিষেবাগুলোর তালিকা তৈরি করে। পরিষেবা তৈরি করার সময় GetService মেথডটি এই এনুমারেশন অবজেক্টগুলোকে একটি আর্গুমেন্ট হিসেবে গ্রহণ করে। উদাহরণস্বরূপ, Google Ads API-এর V25 সংস্করণের জন্য CampaignServiceClient এর একটি ইনস্ট্যান্স তৈরি করতে, পূর্ববর্তী উদাহরণে দেখানো অনুযায়ী Services.V25.CampaignService আর্গুমেন্ট হিসেবে দিয়ে GoogleAdsClient.GetService মেথডটি কল করুন।

ত্রুটি পরিচালনা

সব এপিআই কল সফল হয় না। কোনো কারণে আপনার এপিআই কল ব্যর্থ হলে সার্ভার ত্রুটি দেখাতে পারে। এপিআই ত্রুটিগুলো শনাক্ত করা এবং যথাযথভাবে সেগুলোর সমাধান করা জরুরি।

যখন কোনো API ত্রুটি ঘটে, তখন একটি GoogleAdsException ইনস্ট্যান্স থ্রো করা হয়। কী ভুল হয়েছে তা বুঝতে সাহায্য করার জন্য এতে বিস্তারিত তথ্য থাকে:

public void Run(GoogleAdsClient client, long customerId)
{
    // Get the GoogleAdsService.
    GoogleAdsServiceClient googleAdsService = client.GetService(
        Services.V25.GoogleAdsService);

    // Create a query that will retrieve all campaigns.
    string query = @"SELECT
                    campaign.id,
                    campaign.name,
                    campaign.network_settings.target_content_network
                FROM campaign
                ORDER BY campaign.id";

    try
    {
        // Issue a search request.
        googleAdsService.SearchStream(customerId.ToString(), query,
            delegate (SearchGoogleAdsStreamResponse resp)
            {
                foreach (GoogleAdsRow googleAdsRow in resp.Results)
                {
                    Console.WriteLine("Campaign with ID {0} and name '{1}' was found.",
                        googleAdsRow.Campaign.Id, googleAdsRow.Campaign.Name);
                }
            }
        );
    }
    catch (GoogleAdsException e)
    {
        Console.WriteLine("Failure:");
        Console.WriteLine($"Message: {e.Message}");
        Console.WriteLine($"Failure: {e.Failure}");
        Console.WriteLine($"Request ID: {e.RequestId}");
        throw;
    }
}
      

থ্রেড নিরাপত্তা

একাধিক থ্রেড জুড়ে একটি শেয়ার করা GoogleAdsClient ইনস্ট্যান্সের কনফিগারেশন অবস্থা পরিবর্তন করা থ্রেড-সেফ নয়, কারণ একটি থ্রেডে কোনো ইনস্ট্যান্সে করা কনফিগারেশন পরিবর্তন অন্যান্য থ্রেডে আপনার তৈরি করা সার্ভিসগুলোকে প্রভাবিত করতে পারে। তবে, রিড-অনলি অপারেশন, যেমন একটি অপরিবর্তিত GoogleAdsClient ইনস্ট্যান্স থেকে নতুন সার্ভিস ইনস্ট্যান্স সংগ্রহ করা এবং সমান্তরালভাবে একাধিক সার্ভিসে কল করা, থ্রেড-সেফ।

প্রতি-থ্রেড কনফিগারেশন পরিবর্তনগুলিকে বিচ্ছিন্ন করতে, প্রতিটি ওয়ার্কার টাস্ক বা থ্রেডের জন্য একটি পৃথক GoogleAdsClient ইনস্ট্যানশিয়েট করুন:

GoogleAdsClient client1 = new GoogleAdsClient();
GoogleAdsClient client2 = new GoogleAdsClient();

Task task1 = Task.Run(() => AddAdGroups(client1));
Task task2 = Task.Run(() => AddAdGroups(client2));

await Task.WhenAll(task1, task2);

public void AddAdGroups(GoogleAdsClient client)
{
    // Perform operations with client.
}

আপনার অ্যাপ্লিকেশনটিকে রেসপন্সিভ রাখুন

অনুরোধের আকারের উপর নির্ভর করে, গুগল অ্যাডস এপিআই মেথড কল সম্পন্ন হতে কিছুটা সময় লাগতে পারে। আপনার অ্যাপ্লিকেশনটিকে রেসপন্সিভ রাখতে, এই ধাপগুলো অনুসরণ করুন:

লিগ্যাসি UI ফ্রেমওয়ার্কগুলির জন্য Grpc.Core লাইব্রেরি ব্যবহার করুন।

আপনি যদি .NET Framework-কে লক্ষ্য করে এমন কোনো অ্যাপ্লিকেশন তৈরি করেন যা ASP.NET Web Forms বা WinForms-এর মতো কোনো লিগ্যাসি UI প্রযুক্তি ব্যবহার করে, তাহলে আপনি নিম্নলিখিত উপায়ে লিগ্যাসি Grpc.Core ট্রান্সপোর্ট লাইব্রেরিটি সক্রিয় করতে পারেন:

GoogleAdsConfig config = new GoogleAdsConfig();
config.UseGrpcCore = true;
GoogleAdsClient client = new GoogleAdsClient(config);

অ্যাসিঙ্ক্রোনাস পদ্ধতি ব্যবহার করুন

আপনার অ্যাপ্লিকেশনটিকে রেসপন্সিভ রাখতে আপনি অ্যাসিঙ্ক্রোনাস মেথড ব্যবহার করতে পারেন। এখানে কয়েকটি উদাহরণ দেওয়া হলো।

ক্যাম্পেইনগুলোর তালিকা সংগ্রহ করে একটি ListView যুক্ত করুন।

private async void OnRetrieveCampaignsButtonClick(object sender, EventArgs e)
{
    try
    {
        // Get the GoogleAdsService.
        GoogleAdsServiceClient googleAdsService = client.GetService(
            Services.V25.GoogleAdsService);

        // Create a query that will retrieve all campaigns.
        string query = @"SELECT
                        campaign.id,
                        campaign.name,
                        campaign.network_settings.target_content_network
                    FROM campaign
                    ORDER BY campaign.id";

        List<ListViewItem> items = new List<ListViewItem>();
        await googleAdsService.SearchStreamAsync(
            customerId.ToString(),
            query,
            (SearchGoogleAdsStreamResponse resp) =>
            {
                foreach (GoogleAdsRow googleAdsRow in resp.Results)
                {
                    ListViewItem item = new ListViewItem();
                    item.Text = googleAdsRow.Campaign.Id.ToString();
                    item.SubItems.Add(googleAdsRow.Campaign.Name);
                    items.Add(item);
                }
            }
        );
        listView1.Items.AddRange(items.ToArray());
    }
    catch (GoogleAdsException ex)
    {
        MessageBox.Show($"API Error: {ex.Message}");
    }
}

ক্যাম্পেইনের বাজেট আপডেট করুন এবং মেসেজ বক্স অ্যালার্ট প্রদর্শন করুন

private async void OnUpdateBudgetButtonClick(object sender, EventArgs e)
{
    try
    {
        // Get the CampaignBudgetService.
        CampaignBudgetServiceClient budgetService = client.GetService(
            Services.V25.CampaignBudgetService);

        // Create the campaign budget.
        CampaignBudget budget = new CampaignBudget()
        {
            Name = "Interplanetary Cruise Budget #" +
                ExampleUtilities.GetRandomString(),
            DeliveryMethod = BudgetDeliveryMethod.Standard,
            AmountMicros = 500000
        };

        // Create the operation.
        CampaignBudgetOperation budgetOperation = new CampaignBudgetOperation()
        {
            Create = budget
        };

        // Create the campaign budget asynchronously.
        MutateCampaignBudgetsResponse response =
            await budgetService.MutateCampaignBudgetsAsync(
                customerId.ToString(),
                new CampaignBudgetOperation[] { budgetOperation });

        MessageBox.Show(response.Results[0].ResourceName);
    }
    catch (GoogleAdsException ex)
    {
        MessageBox.Show($"API Error: {ex.Message}");
    }
}