เกี่ยวกับ Codelab นี้
1 บทนำ
ใน Codelab นี้ คุณจะได้เรียนรู้ข้อมูลเบื้องต้นเกี่ยวกับการใช้ Content API for Shopping และ AdWords API รวมถึงสร้างแอปพลิเคชันที่ใช้ทั้ง 2 อย่าง โดยเฉพาะอย่างยิ่ง คุณจะได้สร้างแอปพลิเคชันบรรทัดคำสั่งที่จะสร้างและลิงก์บัญชี AdWords กับบัญชี Merchant Center
สิ่งที่คุณจะได้เรียนรู้
- วิธีสร้างบัญชี AdWords ที่จัดการโดยบัญชีดูแลจัดการ
- วิธีสร้างบัญชี Merchant Center ที่จัดการโดยบัญชีหลายลูกค้า
- วิธีขอลิงก์จากบัญชี Merchant Center กับบัญชี AdWords
- วิธียอมรับลิงก์ Merchant Center ที่รอดําเนินการในบัญชี AdWords
สิ่งที่ต้องมี
- บัญชีดูแลจัดการ AdWords
- บัญชี Merchant Center หลายลูกค้า
- Java 7 ขึ้นไป
- Maven
- โค้ดตัวอย่าง
- เครื่องมือแก้ไขข้อความ (ขอแนะนำให้ใช้ IDE ที่เข้าใจโปรเจ็กต์ Maven เช่น Eclipse หรือ IntelliJ)
2 การเริ่มตั้งค่า
ดาวน์โหลดโค้ด
คลิกลิงก์ต่อไปนี้เพื่อดาวน์โหลดโค้ดทั้งหมดของ Codelab นี้
แตกไฟล์ ZIP ที่ดาวน์โหลด ซึ่งจะแตกโฟลเดอร์รูท (shopping-account-linking-master
) ที่มีโปรเจ็กต์ Maven พร้อมกับทรัพยากรทั้งหมดที่คุณต้องการ ไดเรกทอรีย่อยที่ควรทราบมีดังนี้
src/main/java
คือรูทแหล่งที่มาของโปรเจ็กต์ Maven และมีโครงร่างโค้ดให้คุณใช้งานsrc/main/java/solution
มีโซลูชันที่เสร็จสมบูรณ์
ติดตั้งแพ็กเกจและบิลด์ที่จำเป็น
หากใช้ IDE ที่รองรับ Maven เช่น Eclipse หรือ IntelliJ คุณสามารถนำเข้าโฟลเดอร์ที่แตกไฟล์เป็นโปรเจ็กต์ Maven แล้วคอมไพล์โปรเจ็กต์ได้ตามปกติ
หากใช้ Maven จากบรรทัดคำสั่ง คุณสามารถเรียกใช้คำสั่งต่อไปนี้เพื่อเรียกข้อมูลแพ็กเกจที่จำเป็นและคอมไพล์โปรเจ็กต์จากโฟลเดอร์รูทของโปรเจ็กต์ที่แตกไฟล์ (shopping-account-linking-master
)
mvn compile
3 ตั้งค่าการตรวจสอบสิทธิ์
ในขั้นตอนนี้ เราจะไม่เขียนโค้ด แต่ตั้งค่าไฟล์ที่มีโทเค็นการตรวจสอบสิทธิ์ที่เหมาะสมสําหรับ AdWords API และ Content API for Shopping
ตั้งค่าการตรวจสอบสิทธิ์ AdWords API
Codelab นี้ใช้การโหลดข้อมูลเข้าสู่ระบบเดียวกับไลบรารีไคลเอ็นต์ ดังนั้นหากคุณใช้ไลบรารีไคลเอ็นต์ Google Ads API สําหรับ Java กับบัญชีดูแลจัดการอยู่แล้ว ก็ควรตั้งค่าเสร็จแล้ว หรือทำตามขั้นตอนที่ 1-3 เพื่อเริ่มต้นใช้งานไลบรารีของไคลเอ็นต์ Google Ads API สําหรับ Java
ตั้งค่าการตรวจสอบสิทธิ์ Content API
หากยังไม่มีคีย์บัญชีบริการ ให้ทำดังนี้
- ไปที่ Merchant Center สำหรับบัญชีหลายลูกค้า แล้วเลือก Content API จากเมนูรายการเพิ่มเติม
- เลือกการตรวจสอบสิทธิ์ แล้วคลิกปุ่ม + สีน้ำเงิน
- หลังจากยอมรับข้อกำหนดในการให้บริการของ Google Cloud Platform และ Google APIs แล้ว เบราว์เซอร์จะดาวน์โหลดไฟล์ JSON ที่มีคีย์บัญชีบริการใหม่โดยอัตโนมัติ
จากนั้นทำตามวิธีการตั้งค่าการตรวจสอบสิทธิ์สำหรับตัวอย่าง Shopping ด้วยบัญชีบริการ กล่าวคือ สําเนาคีย์บัญชีบริการควรอยู่ในเส้นทางต่อไปนี้จากไดเรกทอรีหลัก shopping-samples/content/service-account.json
คุณไม่จําเป็นต้องตั้งค่าตัวอย่าง เว้นแต่ว่าคุณจะสนใจลองใช้ตัวอย่างหลังจากทํา Codelab นี้เสร็จแล้ว
ทดสอบ
เมื่อคุณมีโทเค็นการตรวจสอบสิทธิ์ในตำแหน่งที่ถูกต้องแล้ว ให้ลองเรียกใช้ตัวอย่าง หากคุณใช้ Maven ในบรรทัดคำสั่ง ให้เรียกใช้คำสั่งต่อไปนี้
mvn compile
mvn exec:java -Dexec.mainClass="SolutionRunner"
หากคุณได้รับข้อความแสดงข้อผิดพลาดเกี่ยวกับไม่มีการระบุออบเจ็กต์เซสชัน แสดงว่าโทเค็นการตรวจสอบสิทธิ์ของคุณใช้งานได้ตามปกติ ไม่เช่นนั้น ข้อความแสดงข้อผิดพลาดที่คุณได้รับจะแจ้งให้ทราบว่าข้อมูลเข้าสู่ระบบใดใช้งานไม่ได้และไฟล์ใดที่ต้องแก้ไข
4 เชื่อมต่อกับ API
เมื่อคุณมีโทเค็นการตรวจสอบสิทธิ์ที่ถูกต้องสําหรับ API 2 รายการที่เราจะใช้แล้ว ก็มาเริ่มกรอกโค้ดจริงกัน เราจะเริ่มต้นด้วยการสร้างออบเจ็กต์เซสชันโดยใช้โทเค็นการตรวจสอบสิทธิ์ ในขั้นตอนต่อๆ ไป เราจะเข้าถึงบริการและเมธอดต่างๆ ที่แต่ละ API มีให้โดยใช้ออบเจ็กต์เซสชันเหล่านี้
สร้างออบเจ็กต์เซสชัน Content API
หากต้องการสร้างเซสชัน Content API เราจะสร้างออบเจ็กต์ ShoppingContent.Builder
แล้วใช้ออบเจ็กต์ดังกล่าวเพื่อสร้างออบเจ็กต์ ShoppingContent
ที่เหมาะสม แต่โชคดีที่เรามีทุกอย่างที่จำเป็นในการสร้างรายการแรกอยู่แล้วในโครงร่างโค้ด เราจึงแค่ต้องนำมารวมกันดังนี้
SolutionRunner.java
// TODO(sessions): Create a ShoppingContent object using ShoppingContent.Builder.
contentApiSession =
new ShoppingContent.Builder(httpTransport, jsonFactory, contentApiCredential)
.setApplicationName("Linking AdWords and Merchant Center Accounts Codelab")
.build();
การตั้งชื่อแอปพลิเคชันไม่จำเป็น แต่แสดงวิธีตั้งค่าตัวเลือกที่ต้องการผ่านออบเจ็กต์ ShoppingContent.Builder
ก่อนเรียกใช้เมธอด build()
สร้างออบเจ็กต์เซสชัน AdWords API
ในทํานองเดียวกัน ยังมีคลาส AdWordsSession.Builder
สำหรับสร้างออบเจ็กต์ AdWordsSession
ความแตกต่างหลักๆ ในที่นี้คือเราจะใช้เมธอด fromFile()
เพื่อโหลดตัวเลือกการกําหนดค่าจากไฟล์ ads.properties
ที่เราตั้งค่าไว้ในขั้นตอนก่อนหน้าแทนการตั้งค่าตัวเลือกการกําหนดค่าในเครื่องมือสร้างโดยตรง
SolutionRunner.java
// TODO(sessions): Create a AdWordsSession object using AdWordsSession.Builder.
adWordsSession =
new AdWordsSession.Builder()
.fromFile()
.withOAuth2Credential(adwordsOAuth2Credential)
.build();
ทดสอบ
เราจะใช้คำสั่งเดียวกับในส่วนที่แล้วเพื่อสร้างและเรียกใช้โปรเจ็กต์ Maven อีกครั้ง หากคุณเรียกใช้จากบรรทัดคำสั่ง
mvn compile
mvn exec:java -Dexec.mainClass="SolutionRunner"
คราวนี้คุณไม่ควรพบข้อผิดพลาดใดๆ แต่ก็จะไม่เห็นเอาต์พุตที่น่าสนใจเช่นกัน เราจะเพิ่มข้อมูลดังกล่าวเมื่อเรียก API เพื่อสร้างและลิงก์บัญชีใหม่
5 สร้างบัญชี AdWords ที่มีการจัดการใหม่
เมื่อสร้างออบเจ็กต์เซสชัน API แล้ว เราจะสร้างบัญชีที่ต้องการลิงก์ เราจะเริ่มต้นด้วย AdWords และสร้างบัญชีทดสอบภายใต้บัญชีดูแลจัดการ
เข้าถึง ManagedCustomerService
ใน AdWords API เราจะเข้าถึงบริการต่างๆ ที่พร้อมใช้งานโดยดึงข้อมูลอินสแตนซ์ของคลาส AdWordsServices ก่อนโดยใช้เมธอด getInstance()
แบบคงที่ เมื่อใช้อินสแตนซ์นี้ เราจะสร้างไคลเอ็นต์สําหรับบริการเหล่านั้นได้ผ่านเมธอด get()
ซึ่งใช้อาร์กิวเมนต์ 2 รายการ ได้แก่ เซสชันที่จะสร้างไคลเอ็นต์ และอินเทอร์เฟซสําหรับบริการที่ต้องการ
SolutionRunner.java
// TODO(newAWaccount): Using the ManagedCustomerService, create a new testing AdWords account
// under the given manager account.
AdWordsServicesInterface adWordsServices = AdWordsServices.getInstance();
ManagedCustomerServiceInterface managedCustomerService =
adWordsServices.get(adWordsSession, ManagedCustomerServiceInterface.class);
ในส่วนนี้ เราจะเข้าถึง ManagedCustomerService ซึ่งช่วยให้เราจัดการ "ลูกค้า" (บัญชี) ของ AdWords จากบัญชีดูแลจัดการหนึ่งๆ ได้
ระบุการตั้งค่าบัญชีใหม่
ก่อนอื่น เราจะสร้างออบเจ็กต์ ManagedCustomer ที่มีการตั้งค่าสําหรับบัญชีใหม่ เราจะสร้างบัญชีทดสอบสําหรับโค้ดแล็บนี้ โดยตั้งค่าสกุลเงินเป็น USD และเขตเวลาเป็นเขตเวลาเดียวกับชายฝั่งตะวันตกของสหรัฐอเมริกา
SolutionRunner.java
Random rand = new Random();
long run = rand.nextLong();
ManagedCustomer newAdWordsAccount = new ManagedCustomer();
newAdWordsAccount.setName(String.format("AdWords Account Created by Run %d", run));
newAdWordsAccount.setTestAccount(true);
newAdWordsAccount.setCurrencyCode("USD");
newAdWordsAccount.setDateTimeZone("America/Los_Angeles");
นอกจากนี้ เรายังสร้างตัวเลขสุ่มที่จะใส่ไว้ในชื่อบัญชีด้วย การดำเนินการนี้เพื่อให้เราจับคู่บัญชี AdWords ที่จะสร้างที่นี่กับบัญชี Merchant Center ที่จะสร้างในภายหลังได้ เพื่อที่เราจะได้ตรวจสอบด้วยสายตาเมื่อโซลูชันเสร็จสมบูรณ์และตรวจสอบว่าลิงก์บัญชีทั้ง 2 บัญชีแล้ว
สร้างบัญชีที่มีการจัดการใหม่
หากต้องการสร้างบัญชีใหม่จริงๆ เราจะใช้ ManagedCustomerOperation เพื่อระบุการดำเนินการ ADD
ดังนี้
SolutionRunner.java
ManagedCustomerOperation operation = new ManagedCustomerOperation();
operation.setOperand(newAdWordsAccount);
operation.setOperator(Operator.ADD);
จากนั้นเราจะดำเนินการโดยใช้เมธอด mutate()
ของออบเจ็กต์ ManagedCustomerService
เมธอดนี้ใช้อาร์เรย์ของการดำเนินการ แต่เราต้องการดำเนินการเพียงรายการเดียว ผลลัพธ์ของเมธอด mutate()
คือค่าที่มีรายการ ManagedCustomer
ซึ่งในกรณีนี้จะเป็นรายการที่มีลูกค้า 1 ราย ซึ่งเป็นบัญชีใหม่ที่สร้างขึ้น เราจะดึงข้อมูลบัตรประจำตัวสำหรับบัญชีใหม่ดังกล่าวเพื่อใช้ในอนาคต และเราจะพิมพ์บัตรดังกล่าวด้วยเพื่อดูว่าเป็นส่วนหนึ่งของผลลัพธ์ของโซลูชัน
SolutionRunner.java
ManagedCustomerReturnValue result =
managedCustomerService.mutate(new ManagedCustomerOperation[] {operation});
Long adWordsId = result.getValue()[0].getCustomerId();
System.out.printf("Created new AdWords account %d%n", adWordsId);
ทดสอบ
ลองใช้วิธีแก้ปัญหาตามเดิม หากคุณใช้ Maven จากบรรทัดคำสั่ง ให้ทำดังนี้
mvn compile
mvn exec:java -Dexec.mainClass="SolutionRunner"
หากทุกอย่างเรียบร้อยดี คุณไม่ควรเห็นข้อผิดพลาด และในครั้งนี้เราจะเห็นรหัสของบัญชี AdWords ใหม่ที่เราสร้างขึ้น ตรวจสอบบัญชีดูแลจัดการในเว็บไซต์ AdWords และคุณควรเห็นบัญชีใหม่แสดงอยู่ในนั้นด้วย
6 สร้างบัญชีย่อย Merchant Center ใหม่
ในขั้นตอนนี้ เราจะสร้างบัญชีย่อย Merchant Center เพื่อลิงก์กับบัญชี AdWords ที่สร้างไว้ในขั้นตอนสุดท้าย เราสามารถขอลิงก์ระหว่างการสร้างบัญชีย่อยแทนที่จะขอลิงก์แยกต่างหากหลังจากสร้างบัญชีย่อยแล้ว เนื่องจากเรามีรหัสของบัญชี AdWords ที่เกี่ยวข้องอยู่แล้ว
ระบุการตั้งค่าสําหรับบัญชีย่อยใหม่
ซึ่งต่างจาก AdWords API เนื่องจากตัวตั้งค่าสำหรับคลาสโมเดล Account
จะแสดงผลออบเจ็กต์เพื่อให้เราต่อคิวการเรียกใช้ออบเจ็กต์ Account
ใหม่ได้ เราจะใช้ตัวเลขสุ่มที่เราสร้างขึ้นระหว่างการสร้างบัญชี AdWords ในชื่อของบัญชี Merchant Center ใหม่ด้วย
SolutionRunner.java
Account newMcAccount = new Account()
.setName(String.format("Merchant Center Account Created by Run %d", run))
.setAdwordsLinks(
ImmutableList.of(
new AccountAdwordsLink()
.setAdwordsId(BigInteger.valueOf(adWordsId))
.setStatus("active")));
ดังที่ได้กล่าวไว้ในบทนําของขั้นตอนนี้ เนื่องจากเรามีรหัส AdWords สําหรับบัญชีที่จัดการใหม่อยู่แล้ว เราจึงเพิ่มรหัสนั้นลงในรายการ AdwordsLinks
สําหรับบัญชีย่อยใหม่ได้ เมื่อสร้างบัญชีย่อยใหม่ ระบบจะขอลิงก์นี้โดยอัตโนมัติและลิงก์จะพร้อมใช้งานใน AdWords API
สร้างบัญชีย่อยใหม่
ใน Content API เราจะเรียกใช้เมธอด accounts()
ของออบเจ็กต์เซสชันเพื่อเข้าถึงบริการ Accounts
จากนั้นเรียกใช้เมธอด insert()
โดยตรงแทนการตั้งค่าออบเจ็กต์การดำเนินการ เมธอดนี้ใช้อาร์กิวเมนต์ 2 รายการ ได้แก่ รหัสของบัญชีหลายลูกค้าที่จะใช้สร้างบัญชีย่อยใหม่ และออบเจ็กต์ Account
ที่มีการตั้งค่าที่ต้องการ
SolutionRunner.java
newMcAccount = contentApiSession.accounts().insert(mcaId, newMcAccount).execute();
System.out.printf("Created new Merchant Center account %s%n", newMcAccount.getId());
เมธอด insert()
จะแสดงผลออบเจ็กต์ Account
ที่มีการตั้งค่าสําหรับบัญชีย่อยใหม่ เราจะเขียนทับออบเจ็กต์ Account
เดิมเนื่องจากเวอร์ชันที่แสดงผลมีข้อมูลสำคัญอย่างรหัสของบัญชีย่อยใหม่ เราจะพิมพ์ข้อมูลดังกล่าวในเอาต์พุตจากโซลูชันของเรา เพื่อให้สามารถเรียกใช้โซลูชันและยืนยันได้ว่าบัญชีย่อยใหม่อยู่ใน Merchant Center
ทดสอบ
ลองใช้วิธีแก้ปัญหาตามเดิม หากคุณใช้ Maven จากบรรทัดคำสั่ง ให้ทำดังนี้
mvn compile
mvn exec:java -Dexec.mainClass="SolutionRunner"
หากทุกอย่างเรียบร้อยดี คุณไม่ควรเห็นข้อผิดพลาด และในครั้งนี้เราจะเห็นรหัสของทั้งบัญชี AdWords ใหม่และบัญชี Merchant Center ใหม่ ตรวจสอบ Merchant Center สำหรับบัญชีหลายลูกค้าเพื่อดูบัญชีย่อยใหม่
7 ยอมรับลิงก์จากบัญชี AdWords
ในขั้นตอนสุดท้าย เราได้สร้างบัญชีย่อย Merchant Center ใหม่ โดยขอลิงก์กับบัญชี AdWords ใหม่ของเราไปพร้อมๆ กัน ในขั้นตอนนี้ เราจะทํากระบวนการให้เสร็จสมบูรณ์โดยใช้ AdWords API เพื่อยอมรับลิงก์ที่ขอ
เข้าถึง CustomerService
เช่นเดียวกับก่อนหน้านี้ เราจะใช้คลาส AdWordsServices
เพื่อรับไคลเอ็นต์สำหรับ CustomerService
อย่างไรก็ตาม ก่อนสร้างไคลเอ็นต์ เราจะเปลี่ยนออบเจ็กต์เซสชัน AdWords ก่อนเพื่อให้การใช้งานในอนาคตทํางานในบัญชีที่มีการจัดการใหม่แทนบัญชีดูแลจัดการ ท้ายที่สุดแล้ว บัญชี Merchant Center ได้ขอลิงก์กับบัญชีที่จัดการ ไม่ใช่บัญชีดูแลจัดการ
SolutionRunner.java
// TODO(acceptLink): Using the mutateServiceLinks method in CustomerService, accept the
// proposed link between the new AdWords account and the new Merchant Center account.
adWordsSession.setClientCustomerId(adWordsId.toString());
CustomerServiceInterface customerService =
adWordsServices.get(adWordsSession, CustomerServiceInterface.class);
ระบุลิงก์ที่ขอ
เราจะสร้างออบเจ็กต์ ServiceLink
ที่มีการตั้งค่าลิงก์ จากนั้นสร้างออบเจ็กต์ ServiceLinkOperation
ที่อธิบายการดำเนินการที่ต้องการ เช่นเดียวกับตอนที่สร้างบัญชี AdWords ใหม่ ในกรณีนี้ เราต้องการลิงก์บริการที่รอดำเนินการไปยังบัญชี MERCHANT_CENTER
และ SET
ไปยัง ACTIVE
สำหรับการตั้งค่า serviceLinkId
เราจะใช้รหัสของบัญชี Merchant Center ที่เพิ่งสร้างขึ้น เนื่องจากรหัสดังกล่าวจะใช้เป็นรหัสของลิงก์บริการใน AdWords
SolutionRunner.java
ServiceLink serviceLink = new ServiceLink();
serviceLink.setServiceLinkId(newMcAccount.getId().longValue());
serviceLink.setLinkStatus(ServiceLinkLinkStatus.ACTIVE);
serviceLink.setServiceType(ServiceType.MERCHANT_CENTER);
ServiceLinkOperation op = new ServiceLinkOperation();
op.setOperator(Operator.SET);
op.setOperand(serviceLink);
ยอมรับลิงก์
สุดท้าย เราจะเรียกใช้เมธอด mutateServiceLinks()
ของออบเจ็กต์ CustomerService เพื่อดำเนินการ เช่นเดียวกับก่อนหน้านี้ การดำเนินการนี้จะใช้เวลาดำเนินการกับลิงก์บริการหลายรายการ ในครั้งนี้ เมธอดจะแสดงรายการลิงก์บริการ (ที่อาจเปลี่ยนแปลง) โดยตรง ดังนั้นเราจะพิมพ์ผลลัพธ์ของโซลูชันโดยการวนซ้ำรายการดังกล่าว แน่นอนว่าเนื่องจากเราระบุการดำเนินการเพียงรายการเดียว คุณจึงควรเห็นลิงก์เพียงรายการเดียวในเอาต์พุต
SolutionRunner.java
ServiceLink[] mutatedServiceLinks =
customerService.mutateServiceLinks(new ServiceLinkOperation[] {op});
for (ServiceLink mutatedServiceLink : mutatedServiceLinks) {
System.out.printf(
"Service link with service link ID %d, type '%s' updated to status: %s.%n",
mutatedServiceLink.getServiceLinkId(),
mutatedServiceLink.getServiceType(),
mutatedServiceLink.getLinkStatus());
}
ทดสอบ
ลองใช้วิธีแก้ปัญหาตามเดิม หากคุณใช้ Maven จากบรรทัดคำสั่ง ให้ทำดังนี้
mvn compile
mvn exec:java -Dexec.mainClass="SolutionRunner"
หากทุกอย่างเรียบร้อยดี คุณไม่ควรเห็นข้อผิดพลาด และในครั้งนี้เราจะเห็นหมายเหตุว่าลิงก์บริการได้รับการอัปเดตให้ใช้งานได้แล้ว ตรวจสอบ AdWords และ Merchant Center และตรวจสอบอีกครั้งว่าบัญชีลิงก์กันแล้ว
8 รูปแบบต่างๆ ของธีม
ยินดีด้วยที่ผ่าน Codelab เมื่อคุณมีโซลูชันที่ใช้งานได้อย่างสมบูรณ์แล้ว เรามาดูตัวอย่างวิธีแก้ไขหรือขยายโซลูชันเพื่อใช้ API อื่นๆ ที่คุณเห็นในโค้ดแล็บนี้กัน
เครดิตพิเศษ: อัปเดตบัญชี Merchant Center ที่มีอยู่เพื่อขอลิงก์ AdWords
ในโค้ดแล็บ เราได้สร้างบัญชี AdWords ก่อนอย่างชาญฉลาดเพื่อให้ใช้ข้อมูลของบัญชีดังกล่าวเพื่อขอลิงก์เมื่อสร้างบัญชี Merchant Center ได้ อย่างไรก็ตาม หากบัญชี Merchant Center มีอยู่แล้ว คุณจะต้องอัปเดตการกําหนดค่าแทน ลองแก้ไขโค้ดเพื่อสร้างบัญชี Merchant Center ก่อน แล้วกลับไปสร้างบัญชี AdWords และอัปเดตการกําหนดค่าเพื่อขอลิงก์
เครดิตพิเศษ: ยืนยันการสร้างลิงก์โดยการดึงข้อมูลบัญชี AdWords และ Merchant Center
ปัจจุบันแอปพลิเคชันจะถือว่าการเรียก API ไม่มีข้อผิดพลาดเป็นสัญญาณของความสำเร็จเท่านั้น ลองขยายตัวอย่างเพื่อตรวจสอบข้อมูลลิงก์ของบัญชี Merchant Center และ AdWords ใหม่ และดูว่าลิงก์ใช้งานได้จริง
อยากไปไหนหรือทำอะไรก็ได้ตามที่ใจต้องการ
หากคิดถึงการเปลี่ยนแปลงอื่นๆ ที่คุณทำได้ ก็ลองทำดู หากต้องการโค้ดอ้างอิงสำหรับไอเดีย ให้ดูตัวอย่าง Google Shopping และไดเรกทอรี examples
ในแหล่งที่มาของไลบรารีไคลเอ็นต์ Java ของ Google Ads