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