Rapor İsteme ve İndirme
Raporlama zaman uyumsuz bir işlemdir. Rapor istemek için genel akış aşağıdadır.
- Rapor parametreleriyle istek oluşturma
- Raporlama hizmetine istek gönderme
- Hizmet, isteği işleyene kadar kuyruğa alır
- Rapor işinin durumunu almak için hizmeti düzenli aralıklarla yoklama
- Durum Başarılı olduğunda, raporu indirmek için hizmetin sağladığı URL'yi kullanın.
.NET dili, Java veya Python kullanıyorsanız Bing Ads API İstemci Kitaplıklarını kullanmanız gerekir. .NET, Java ve Python SDK'ları aşağıda açıklanan düşük düzey ayrıntıları soyutlar. Örneğin, rapor indirmek için SubmitGenerateReportRequest ve PollGenerateReportRequest çağırmak yerine Reporting Service Manager ile tek bir yöntem kullanabilirsiniz.
Raporların nasıl indirildiğini gösteren kod örnekleri için bkz. Rapor İstekleri Kod Örneği.
Rapor İste
İstekte bulunmak istediğiniz raporu belirleyin. İsteyebileceğiniz raporların listesi için bkz. Rapor Türleri.
Rapor isteği nesnesinin bir örneğini oluşturun. Rapor isteğinin bazı öğeleri gereklidir ve bazıları isteğe bağlıdır. Öğeleri uygulamanız için uygun şekilde ayarlayın. Rapor isteğinin öğeleri, diğerleri arasında rapora eklenecek verilerin kapsamını, rapora eklenecek veri sütunlarını ve raporun yalnızca tüm veriler kullanılabilir olduğunda oluşturulup oluşturulmayacağını belirler.
Not
ReportRequest veri nesnesinden türetilen nesnelerden birinin örneğini oluşturmanız gerekir; ReportRequest nesnesini SubmitGenerateReport işlemine geçirmeye çalışırsanız, çağrı başarısız olur.
SubmitGenerateReportRequest nesnesinin bir örneğini oluşturun ve ReportRequest öğesini önceki adımda seçtiğiniz rapor isteğine ayarlayın.
İsteği göndermek için SubmitGenerateReport işlemini çağırın. İşlem, rapor oluşturulmadan önce döndüren zaman uyumsuz bir işlemdir. İşlem, raporun ne zaman tamamlandığını belirlemek için aşağıdaki adımlarda kullandığınız bir ReportRequestId döndürür. Rapor isteği tanımlayıcısı iki gün boyunca geçerlidir. Raporu iki gün içinde indirmezseniz, raporu yeniden istemeniz gerekir.
PollGenerateReportRequest nesnesinin bir örneğini oluşturun ve rapor isteği tanımlayıcısını önceki adımda döndürülen tanımlayıcı olarak ayarlayın.
Not
SubmitGenerateReport ve PollGenerateReport işlemleri için aynı kullanıcı kimlik bilgilerini kullanmanız gerekir.
Durum Beklemedeykendöngüde PollGenerateReport işlemini çağırın. İstek başarıyla tamamlandığında işlem durumu Başarılı olarak ayarlar; Beklemede veya Başarılı dışında bir durum raporun başarısız olduğunu gösterir.
Bir rapor isteğinin tamamlanması için gereken süre, istediğiniz rapor türü gibi bir dizi değişkene bağlıdır; belirttiğiniz toplama, kapsam ve zaman aralığı değerleri; beklenen satır sayısı; ve kuyrukta bulunan isteklerin sayısı. Bu değişkenler nedeniyle, tüm durumlar için uygun bir yoklama aralığı belirlemek zordur. Çoğu raporun dakikalar içinde tamamlanması gerektiğinden, çoğu durumda iki ile 15 dakikalık aralıklarda yoklama uygun olmalıdır. Genel yoklama süresi 60 dakikayı aşarsa rapor tanımlayıcısını kaydetmeyi, döngüden çıkmayı ve daha sonra yeniden denemeyi göz önünde bulundurun.
İstek başarıyla tamamlanırsa, raporu içeren dosyayı indirmek için ReportDownloadUrl öğesindeki URL'yi kullanın. İndirme URL'sini aldıktan sonra raporu indirmek için beş dakikanız vardır. URL'yi aldıktan sonra beş dakika içinde raporu indirmezseniz, raporu indirmek için kullanılacak yeni bir URL'yi yoklamanız gerekir.
Rapor dosyası sıkıştırılır; bu nedenle, raporu okumak için sıkıştırmasını açmanız gerekir.
Özel Tarih Aralığı Oluşturma
Aşağıdaki yordamda bir rapor isteği için özel tarih aralığının nasıl belirtileceği gösterilmektedir. Bu, yukarıda açıklanan rapor isteği iş akışı için isteğe bağlıdır. Özel bir tarih aralığı belirtirseniz , ReportTime.PredefinedTime öğesini ayarlamamalısınız. Ayrıca, rapor isteği nesnesinin Toplama öğesinin belirtilen süreye ait verilerin nasıl toplandığını belirlediğini unutmayın.
ReportTime nesnesinin bir örneğini oluşturun. ReportTime nesnesini ReportRequest veri nesnesinin Time öğesine atayın.
Özel tarih aralığının başlangıç tarihini belirten bir Date nesnesi oluşturun. Date nesnesini ReportTime.CustomDateRangeStart öğesine atayın.
Özel tarih aralığının bitiş tarihini belirten başka bir Date nesnesi oluşturun. Date nesnesini ReportTime.CustomDateRangeEnd öğesine atayın.
Aşağıdaki kod parçacığı, özel bir tarih aralığı istemek için bir rapor isteği nesnesinin nasıl başlatılmış olduğunu gösterir.
// Create an instance of the ReportTime class to hold the report date
// information.
request.Time = new ReportTime();
// Set the start date for the report to one month before today.
DateTime startDate = DateTime.Today.AddMonths(-1);
request.Time.CustomDateRangeStart = new Date();
request.Time.CustomDateRangeStart.Day = startDate.Day;
request.Time.CustomDateRangeStart.Month = startDate.Month;
request.Time.CustomDateRangeStart.Year = startDate.Year;
// Set the end date to today.
DateTime endDate = DateTime.Today;
request.Time.CustomDateRangeEnd = new Date();
request.Time.CustomDateRangeEnd.Day = endDate.Day;
request.Time.CustomDateRangeEnd.Month = endDate.Month;
request.Time.CustomDateRangeEnd.Year = endDate.Year;
report.setTime(new ReportTime());
Calendar calendar = Calendar.getInstance();
report.getTime().setCustomDateRangeStart(new Date());
report.getTime().getCustomDateRangeStart().setMonth(1);
report.getTime().getCustomDateRangeStart().setDay(1);
report.getTime().getCustomDateRangeStart().setYear(calendar.get(Calendar.YEAR)-1);
report.getTime().setCustomDateRangeEnd(new Date());
report.getTime().getCustomDateRangeEnd().setMonth(12);
report.getTime().getCustomDateRangeEnd().setDay(31);
report.getTime().getCustomDateRangeEnd().setYear(calendar.get(Calendar.YEAR)-1);
$report->Time = new ReportTime();
$report->Time->PredefinedTime = null;
date_default_timezone_set('UTC');
$LastYear = date("Y") - 1;
$report->Time->CustomDateRangeStart = new Date();
$report->Time->CustomDateRangeStart->Month = 1;
$report->Time->CustomDateRangeStart->Day = 1;
$report->Time->CustomDateRangeStart->Year = $LastYear;
$report->Time->CustomDateRangeEnd = new Date();
$report->Time->CustomDateRangeEnd->Month = 12;
$report->Time->CustomDateRangeEnd->Day = 31;
$report->Time->CustomDateRangeEnd->Year = $LastYear;
report_time=reporting_service.factory.create('ReportTime')
custom_date_range_start=reporting_service.factory.create('Date')
custom_date_range_start.Day=1
custom_date_range_start.Month=1
custom_date_range_start.Year=int(strftime("%Y", gmtime()))-1
report_time.CustomDateRangeStart=custom_date_range_start
custom_date_range_end=reporting_service.factory.create('Date')
custom_date_range_end.Day=31
custom_date_range_end.Month=12
custom_date_range_end.Year=int(strftime("%Y", gmtime()))-1
report_time.CustomDateRangeEnd=custom_date_range_end
report_time.PredefinedTime=None
report_request.Time=report_time