เปลี่ยนข้อมูลขนาดใหญ่ให้กลายเป็นข้อมูลเชิงลึกโดยใช้ Google ชีตและสไลด์

1. ตั้งแต่การวิเคราะห์ข้อมูลขนาดใหญ่ไปจนถึงการนำเสนอสไลด์

มีเครื่องมือมากมายสำหรับนักวิทยาศาสตร์ข้อมูลในการวิเคราะห์บิ๊กดาต้า แต่ท้ายที่สุดแล้วนักวิเคราะห์ก็ยังคงต้องพิสูจน์ผลลัพธ์ต่อผู้จัดการ การแสดงตัวเลขจำนวนมากบนกระดาษหรือในฐานข้อมูลต่อผู้มีส่วนเกี่ยวข้องหลักนั้นเป็นเรื่องยาก Codelab Google Apps Script ระดับกลางนี้ใช้แพลตฟอร์มสำหรับนักพัฒนาแอปของ Google 2 แพลตฟอร์ม (Google Workspace และ คอนโซล Google Cloud) เพื่อช่วยคุณทำงานช่วงสุดท้ายให้เป็นอัตโนมัติ

เครื่องมือสำหรับนักพัฒนาซอฟต์แวร์ของ Google Cloud ช่วยให้คุณวิเคราะห์ข้อมูลเชิงลึกได้ จากนั้นคุณจะนำผลลัพธ์ไปแทรกลงในสเปรดชีตและสร้างงานนำเสนอสไลด์ด้วยข้อมูลได้ ซึ่งเป็นวิธีที่เหมาะสมกว่าในการส่งข้อมูลไปยังฝ่ายจัดการ Codelab นี้ครอบคลุม API ของ BigQuery ใน Cloud Console (ในฐานะบริการขั้นสูงของ Apps Script) และบริการ Apps Script ในตัวสำหรับ Google ชีตและ Google สไลด์

แรงจูงใจ

แอปตัวอย่างในโค้ดแล็บนี้ได้รับแรงบันดาลใจจากตัวอย่างโค้ดอื่นๆ ดังนี้

แม้ว่าแอปตัวอย่างของ Codelab Slides API จะมี BigQuery และสไลด์ด้วย แต่ก็แตกต่างจากแอปตัวอย่างของ Codelab นี้ในหลายๆ ด้าน ดังนี้

  • แอป Node.js ของพวกเขาเทียบกับแอป Apps Script ของเรา
  • โดยจะใช้ REST API ในขณะที่เราใช้บริการ Apps Script
  • โดยใช้ Google ไดรฟ์แต่ไม่ได้ใช้ Google ชีต ในขณะที่แอปนี้ใช้ชีตแต่ไม่ได้ใช้ไดรฟ์

สำหรับ Codelab นี้ เราต้องการนำเทคโนโลยีหลายอย่างมารวมกันไว้ในแอปเดียว พร้อมทั้งแสดงฟีเจอร์และ API จากทั่วทั้ง Google Cloud ในลักษณะที่คล้ายกับกรณีการใช้งานในชีวิตจริง เป้าหมายคือการกระตุ้นให้คุณใช้จินตนาการและพิจารณาใช้ทั้ง Cloud Console และ Google Workspace เพื่อแก้ปัญหาที่ท้าทายสำหรับองค์กรและลูกค้า

สิ่งที่คุณจะได้เรียนรู้

  • วิธีใช้ Google Apps Script กับบริการต่างๆ ของ Google
  • วิธีใช้ Google BigQuery เพื่อวิเคราะห์ข้อมูลขนาดใหญ่
  • วิธีสร้าง Google ชีตและแทรกข้อมูลลงในชีต
  • วิธีสร้างแผนภูมิในชีต
  • วิธีโอนข้อมูลและแผนภูมิจากชีตไปยังงานนำเสนอ Google สไลด์

สิ่งที่คุณต้องมี

  • เว็บเบราว์เซอร์ที่มีสิทธิ์เข้าถึงอินเทอร์เน็ต
  • บัญชี Google (บัญชี Google Workspace อาจต้องได้รับการอนุมัติจากผู้ดูแลระบบ)
  • คุ้นเคยกับ Google ชีต ในระดับพื้นฐาน
  • ความสามารถในการอ่านรูปแบบ A1 ของชีต
  • ทักษะ JavaScript ขั้นพื้นฐาน
  • ความรู้ด้านการพัฒนา Apps Script อาจเป็นประโยชน์ แต่หากไม่มีความรู้ด้านนี้ก็ไม่เป็นไร

2. แบบสำรวจ

คุณจะใช้ Codelab/บทแนะนำนี้อย่างไร

อ่านเพื่อรับข้อมูลและอาจส่งต่อให้เพื่อนร่วมงานด้านเทคนิค อ่านเท่าที่ทำได้และลองทำแบบฝึกหัดให้ได้มากที่สุด ไม่ว่าจะเกิดอะไรขึ้น ฉันจะทำ Codelab ทั้งหมดให้เสร็จ

คุณจะให้คะแนนประสบการณ์การใช้งานเครื่องมือและ API สำหรับนักพัฒนาแอป Google Workspace เท่าใด

ผู้ฝึกหัด ขั้นกลาง ผู้ชำนาญ

คุณจะให้คะแนนประสบการณ์การใช้งาน Apps Script โดยเฉพาะเท่าใด

ผู้ฝึกหัด ขั้นกลาง ผู้ชำนาญ

คุณจะให้คะแนนประสบการณ์การใช้งานเครื่องมือและ API สำหรับนักพัฒนาแอปของ Cloud Console เท่าไร

ผู้ฝึกหัด ขั้นกลาง ผู้ชำนาญ

3. ภาพรวม

ตอนนี้คุณทราบแล้วว่า Codelab นี้เกี่ยวกับอะไร ต่อไปนี้คือสิ่งที่คุณจะได้ทำ

  1. ใช้ตัวอย่าง Apps Script-BigQuery ที่มีอยู่และทำให้ใช้งานได้
  2. จากตัวอย่างนี้ ให้ดูวิธีส่งการค้นหาไปยัง BigQuery และรับผลลัพธ์
  3. สร้าง Google ชีตและแทรกผลลัพธ์จาก BigQuery ลงในชีต
  4. แก้ไขโค้ดเพื่อเปลี่ยนข้อมูลที่ส่งคืนและแทรกลงในชีตเล็กน้อย
  5. ใช้บริการชีตใน Apps Script เพื่อสร้างแผนภูมิสำหรับข้อมูล BigQuery
  6. ใช้บริการสไลด์เพื่อสร้างงานนำเสนอใน Google สไลด์
  7. เพิ่มชื่อและคำบรรยายแทนเสียงลงในสไลด์ชื่อเริ่มต้น
  8. สร้างสไลด์ที่มีตารางข้อมูลและส่งออกเซลล์ข้อมูลของชีตไปยังสไลด์
  9. สร้างสไลด์อีกแผ่น แล้วแทรกแผนภูมิสเปรดชีตลงในสไลด์นั้น

มาเริ่มกันด้วยข้อมูลพื้นฐานเกี่ยวกับ Apps Script, BigQuery, ชีต และสไลด์

Google Apps Script และ BigQuery

Google Apps Script เป็นแพลตฟอร์มการพัฒนา Google Workspace ที่ทำงานในระดับที่สูงกว่า Google REST API ซึ่งเป็นสภาพแวดล้อมการพัฒนาแบบ Serverless และการโฮสต์แอปพลิเคชันที่นักพัฒนาซอฟต์แวร์ทุกระดับทักษะเข้าถึงได้ โดยพื้นฐานแล้ว Apps Script คือรันไทม์ JavaScript แบบไร้เซิร์ฟเวอร์สำหรับการทำงานอัตโนมัติ การขยาย และการผสานรวม Google Workspace

โดยใช้ JavaScript ฝั่งเซิร์ฟเวอร์คล้ายกับ Node.js แต่เน้นการผสานรวมอย่างใกล้ชิดกับ Google Workspace และบริการอื่นๆ ของ Google มากกว่าการโฮสต์แอปพลิเคชันที่ขับเคลื่อนด้วยเหตุการณ์แบบอะซิงโครนัสที่รวดเร็ว นอกจากนี้ยังมีสภาพแวดล้อมในการพัฒนาซอฟต์แวร์ที่อาจแตกต่างจากสิ่งที่คุณคุ้นเคย โดย Apps Script ช่วยให้คุณทำสิ่งต่อไปนี้ได้

  • พัฒนาสคริปต์โดยใช้เครื่องมือแก้ไขโค้ดบนเบราว์เซอร์ แต่ก็สามารถพัฒนาในเครื่องได้เมื่อใช้ clasp ซึ่งเป็นเครื่องมือการติดตั้งใช้งานบรรทัดคำสั่งสำหรับ Apps Script
  • เขียนโค้ดใน JavaScript เวอร์ชันเฉพาะที่ปรับแต่งเพื่อเข้าถึง Google Workspace และบริการอื่นๆ ของ Google หรือบริการภายนอก (โดยใช้บริการ URL Fetch หรือ JDBC ของ Apps Script)
  • ไม่ต้องเขียนรหัสการให้สิทธิ์เนื่องจาก Apps Script จะจัดการให้คุณ
  • คุณไม่ต้องโฮสต์แอป เนื่องจากแอปจะทำงานบนเซิร์ฟเวอร์ของ Google ในระบบคลาวด์

Apps Script ทำงานร่วมกับเทคโนโลยีอื่นๆ ของ Google ได้ 2 วิธีดังนี้

  • เป็นบริการในตัว
  • เป็นบริการขั้นสูง

บริการในตัวมีวิธีการระดับสูงสำหรับการโต้ตอบกับข้อมูลผู้ใช้ ระบบอื่นๆ ของ Google และระบบภายนอก บริการขั้นสูงเป็นเพียง Wrapper แบบบางรอบ Google Workspace API หรือ Google REST API บริการขั้นสูงครอบคลุม REST API ทั้งหมด และมักจะทำได้มากกว่าบริการในตัว แต่ต้องใช้โค้ดที่ซับซ้อนกว่า (แม้ว่าจะยังใช้งานง่ายกว่า REST API แบบเต็มก็ตาม) นอกจากนี้ คุณต้องเปิดใช้บริการขั้นสูงสำหรับโปรเจ็กต์สคริปต์ก่อนจึงจะใช้งานได้

นักพัฒนาแอปควรใช้บริการในตัวหากเป็นไปได้ เนื่องจากใช้งานง่ายกว่าและทำได้มากกว่าบริการขั้นสูง อย่างไรก็ตาม Google API บางรายการไม่มีบริการในตัว ดังนั้นบริการขั้นสูงอาจเป็นตัวเลือกเดียว เช่น Google BigQuery ไม่มีบริการในตัว แต่มีบริการ BigQuery บริการ BigQuery เป็นบริการของ Cloud Console ที่ช่วยให้คุณใช้ Google BigQuery API เพื่อทำการค้นหาในคลังข้อมูลขนาดใหญ่ (เช่น หลายเทราไบต์) ได้ แต่ก็ยังให้ผลลัพธ์ได้ภายในไม่กี่วินาที

เข้าถึงชีตและสไลด์จาก Apps Script

ทั้งชีตและสไลด์มีบริการในตัว ซึ่งแตกต่างจาก BigQuery นอกจากนี้ ยังมีบริการขั้นสูงเพื่อให้เข้าถึงฟีเจอร์ที่พบได้ใน API เท่านั้น ดูเอกสารสำหรับทั้งบริการ ชีตและสไลด์ที่มีอยู่แล้วก่อนที่จะไปดูโค้ด โปรดทราบว่ายังมีเอกสารสำหรับบริการขั้นสูงของทั้ง ชีตและสไลด์ด้วย

4. งานที่ 1: เรียกใช้ BigQuery และบันทึกผลลัพธ์ไปยังชีต

บทนำ

เราจะทำ Codelab ส่วนใหญ่ด้วยงานแรกนี้ เมื่อทำเสร็จแล้ว คุณจะทำ Codelab ทั้งหมดไปได้ครึ่งทาง โดยแบ่งออกเป็นส่วนย่อยๆ หลายส่วน ซึ่งคุณจะทำสิ่งต่อไปนี้ได้

  • สร้างทั้งโปรเจ็กต์ Google Apps Script และโปรเจ็กต์ Cloud Console
  • เปิดสิทธิ์เข้าถึงบริการขั้นสูงของ BigQuery
  • เปิดเครื่องมือแก้ไขสคริปต์แล้วป้อนซอร์สโค้ดของแอปพลิเคชัน
  • สำรวจกระบวนการให้สิทธิ์แอป (OAuth2)
  • เรียกใช้แอปพลิเคชันที่ส่งคำขอไปยัง BigQuery
  • ตรวจสอบสเปรดชีต Google ใหม่ที่สร้างขึ้นโดยใช้ผลลัพธ์ BigQuery

ตั้งค่า

  1. หากต้องการสร้างโปรเจ็กต์ Apps Script ให้ไปที่ script.google.com แล้วคลิกโปรเจ็กต์ใหม่
  2. หากต้องการเปลี่ยนชื่อโปรเจ็กต์ Apps Script ให้คลิกโปรเจ็กต์ที่ไม่มีชื่อ ป้อนชื่อโปรเจ็กต์ แล้วคลิกเปลี่ยนชื่อ

จากนั้นคุณจะต้องสร้างโปรเจ็กต์ Cloud Console เพื่อค้นหาข้อมูลใน BigQuery

  1. หากต้องการสร้างโปรเจ็กต์ Cloud Console ให้ใช้ลิงก์ทางลัดนี้เพื่อสร้างโปรเจ็กต์ ตั้งชื่อโปรเจ็กต์ แล้วคลิกสร้าง
  1. เมื่อสร้างโปรเจ็กต์เสร็จแล้ว การแจ้งเตือนจะปรากฏในหน้า ตรวจสอบว่าได้เลือกโปรเจ็กต์ใหม่ในรายชื่อโปรเจ็กต์ด้านบนของหน้าแล้ว
  2. คลิกเมนู f5fbd278915eb7aa.png แล้วไปที่ API และบริการ > หน้าจอขอความยินยอม OAuth (ลิงก์โดยตรง)
  3. คลิกภายใน > สร้างเพื่อสร้างแอปสำหรับผู้ใช้ Google Workspace ภายในองค์กร
  4. ในช่องชื่อแอป ให้ป้อน "Big Data Codelab"
  5. ป้อนอีเมลติดต่อสำหรับช่องการสนับสนุนผู้ใช้และข้อมูลติดต่อของนักพัฒนาแอป
  6. คลิกบันทึกและดำเนินการต่อ > บันทึกและดำเนินการต่อ
  7. คลิกเพิ่มเติม 50fa7e30ed2d1b1c.png ในแถบนำทาง แล้วเลือกการตั้งค่าโปรเจ็กต์ (ลิงก์โดยตรง)
  8. คัดลอกค่าที่แสดงในส่วนหมายเลขโปรเจ็กต์ (จะใช้ช่องรหัสโปรเจ็กต์แยกต่างหากในภายหลังใน Codelab)

จากนั้นคุณจะเชื่อมต่อโปรเจ็กต์ Apps Script กับโปรเจ็กต์ Cloud Console

  1. เปลี่ยนไปใช้เครื่องมือแก้ไข App Script แล้วคลิกการตั้งค่าโปรเจ็กต์ settings-gear
  2. ในส่วนโปรเจ็กต์ Google Cloud Platform (GCP) ให้คลิกเปลี่ยนโปรเจ็กต์
  3. ป้อนหมายเลขโปรเจ็กต์ แล้วคลิกตั้งค่าโปรเจ็กต์
  4. จากนั้นคลิกเอดิเตอร์ ตัวแก้ไขโค้ดเพื่อเริ่มเพิ่มบริการขั้นสูงของ BigQuery
  5. คลิกเพิ่มบริการ เพิ่มบริการ ข้างบริการ
  6. ในกล่องโต้ตอบเพิ่มบริการ ให้เลือก BigQuery API แล้วคลิกเพิ่ม

ขั้นตอนสุดท้ายคือการเปิด BigQuery API ใน Cloud Console

  1. โดยสลับไปที่ Cloud Console แล้วคลิก API และบริการ > แดชบอร์ด (ตรวจสอบว่าคุณยังอยู่ในโปรเจ็กต์เดียวกันกับที่สร้างในขั้นตอนที่ 3)
  2. คลิกเปิดใช้ API และบริการ
  3. ค้นหา "BigQuery" เลือก BigQuery API (ไม่ใช่ Data Transfer API ของ BigQuery) แล้วคลิกเปิดใช้เพื่อเปิด

a0e07fa159de9367.png

ตอนนี้คุณพร้อมที่จะป้อนโค้ดของแอปพลิเคชัน ดำเนินการตามกระบวนการให้สิทธิ์ และทำให้แอปพลิเคชันเวอร์ชันแรกนี้ทำงานได้แล้ว

อัปโหลดแอปพลิเคชันและดำเนินการ

  1. ในเครื่องมือแก้ไขสคริปต์ ให้แทนที่myFunction()โค้ดบล็อกเริ่มต้นด้วยโค้ดต่อไปนี้
// File name for data results
var QUERY_NAME = "Most common words in all of Shakespeare's works";
// Replace this value with your Google Cloud Console Project ID
var PROJECT_ID = '';
if (!PROJECT_ID) throw Error('Project ID is required in setup');

/**
 * Runs a BigQuery query; puts results into a Sheet. You must turn on
 * the BigQuery advanced service before you can run this code.
 * @see https://developers.google.com/apps-script/advanced/bigquery#run_query
 * @see https://github.com/googleworkspace/apps-script-samples/blob/master/advanced/bigquery.gs
 *
 * @returns {Spreadsheet} Returns a spreadsheet with BigQuery results
 * @see https://developers.google.com/apps-script/reference/spreadsheet/spreadsheet
 */
function runQuery() {
  // Replace sample with your own BigQuery query.
  var request = {
    query:
        'SELECT ' +
            'LOWER(word) AS word, ' +
            'SUM(word_count) AS count ' +
        'FROM [bigquery-public-data:samples.shakespeare] ' +
        'GROUP BY word ' +
        'ORDER BY count ' +
        'DESC LIMIT 10'
  };
  var queryResults = BigQuery.Jobs.query(request, PROJECT_ID);
  var jobId = queryResults.jobReference.jobId;

  // Wait for BigQuery job completion (with exponential backoff).
  var sleepTimeMs = 500;
  while (!queryResults.jobComplete) {
    Utilities.sleep(sleepTimeMs);
    sleepTimeMs *= 2;
    queryResults = BigQuery.Jobs.getQueryResults(PROJECT_ID, jobId);
  }

  // Get all results from BigQuery.
  var rows = queryResults.rows;
  while (queryResults.pageToken) {
    queryResults = BigQuery.Jobs.getQueryResults(PROJECT_ID, jobId, {
      pageToken: queryResults.pageToken
    });
    rows = rows.concat(queryResults.rows);
  }

  // Return null if no data returned.
  if (!rows) {
    return Logger.log('No rows returned.');
  }

  // Create the results spreadsheet.
  var spreadsheet = SpreadsheetApp.create(QUERY_NAME);
  var sheet = spreadsheet.getActiveSheet();

  // Add headers to Sheet.
  var headers = queryResults.schema.fields.map(function(field) {
    return field.name.toUpperCase();
  });
  sheet.appendRow(headers);

  // Append the results.
  var data = new Array(rows.length);
  for (var i = 0; i < rows.length; i++) {
    var cols = rows[i].f;
    data[i] = new Array(cols.length);
    for (var j = 0; j < cols.length; j++) {
      data[i][j] = cols[j].v;
    }
  }

  // Start storing data in row 2, col 1
  var START_ROW = 2;      // skip header row
  var START_COL = 1;
  sheet.getRange(START_ROW, START_COL, rows.length, headers.length).setValues(data);

  Logger.log('Results spreadsheet created: %s', spreadsheet.getUrl());
}
  1. คลิกบันทึก เซฟ
  2. ข้าง Code.gs ให้คลิกเพิ่มเติม 50fa7e30ed2d1b1c.png > เปลี่ยนชื่อ เปลี่ยนชื่อจาก Code.gs เป็น bq-sheets-slides.js
  3. ต่อไปมาดูโค้ดที่ค้นหา BigQuery และเขียนผลลัพธ์ลงใน Google ชีตกัน คุณจะเห็นข้อความนี้ที่ด้านบนของ runQuery()
SELECT
    LOWER(word) AS word,
    SUM(word_count) AS count
FROM [bigquery-public-data:samples.shakespeare]
GROUP BY word
ORDER BY count
DESC LIMIT 10

การค้นหานี้จะดูผลงานของเชกสเปียร์ ซึ่งเป็นส่วนหนึ่งของชุดข้อมูลสาธารณะของ BigQuery และแสดงคำ 10 อันดับแรกที่ปรากฏบ่อยที่สุดในผลงานทั้งหมดของเขา โดยจัดเรียงตามลำดับความนิยมจากมากไปน้อย คุณจะเห็นว่า BigQuery มีประโยชน์เพียงใดเมื่อนึกถึงปริมาณงานที่ต้องทำในการรวบรวมข้อมูลนี้ด้วยตนเอง

ฟังก์ชันยังประกาศตัวแปร PROJECT_ID ที่ต้องใช้รหัสโปรเจ็กต์ Cloud Console ที่ถูกต้องด้วย คำสั่ง if ใต้ตัวแปรมีไว้เพื่อป้องกันไม่ให้แอปพลิเคชันดำเนินการต่อโดยไม่มีรหัสโปรเจ็กต์

  1. เปลี่ยนไปใช้โปรเจ็กต์ Cloud Console คลิกเพิ่มเติม 50fa7e30ed2d1b1c.png ในแถบนำทาง แล้วเลือกการตั้งค่าโปรเจ็กต์
  2. คัดลอกค่าที่แสดงในส่วนรหัสโปรเจ็กต์
  3. กลับไปที่เครื่องมือแก้ไข App Script ค้นหาตัวแปร PROJECT_ID ใน bq-sheets-slides.js แล้วเพิ่มค่า
  4. คลิกบันทึกเซฟ > เรียกใช้
  5. คลิกตรวจสอบสิทธิ์เพื่อดำเนินการต่อ
  1. เมื่อสคริปต์เริ่มทำงาน บันทึกการดำเนินการในตัวจะเปิดขึ้นและบันทึกการดำเนินการของสคริปต์แบบเรียลไทม์
  1. เมื่อบันทึกการดำเนินการระบุว่า "การดำเนินการเสร็จสมบูรณ์" ให้ไปที่ Google ไดรฟ์ (drive.google.com) แล้วค้นหาสเปรดชีตใน Google ชีตที่มีชื่อว่า "คำที่พบบ่อยที่สุดในผลงานทั้งหมดของเชกสเปียร์" (หรือชื่อที่คุณกำหนดให้กับตัวแปร QUERY_NAME หากคุณอัปเดตแล้ว)
  2. เปิดสเปรดชีตเพื่อดูคำที่พบบ่อยที่สุด 10 คำและจำนวนรวมของคำเหล่านั้นซึ่งจัดเรียงจากมากไปน้อย

afe500ad43f8cdf8.png

สรุปงานที่ 1

ในการตรวจสอบ คุณได้เรียกใช้โค้ดที่ค้นหาผลงานทั้งหมดของเชกสเปียร์โดยดูที่ทุกคำในทุกบทละคร โดยระบบจะนับคำและจัดเรียงตามลำดับการปรากฏจากมากไปน้อย นอกจากนี้ คุณยังใช้บริการในตัวของ Apps Script สำหรับ Google ชีตเพื่อแสดงข้อมูลนี้ด้วย

คุณดูโค้ดที่ใช้สำหรับ bq-sheets-slides.js ได้ในโฟลเดอร์ step1 ของที่เก็บ GitHub ของ Codelab นี้ที่ github.com/googlecodelabs/bigquery-sheets-slides โค้ดนี้ได้แรงบันดาลใจจากตัวอย่างต้นฉบับในหน้าบริการขั้นสูงของ BigQuery ซึ่งเรียกใช้การค้นหาที่แตกต่างกันเล็กน้อยเพื่อดึงคำที่ได้รับความนิยมมากที่สุดซึ่งมีอักขระ 10 ตัวขึ้นไปที่เชกสเปียร์ใช้ นอกจากนี้ คุณยังดูตัวอย่างได้ในที่เก็บ GitHub

หากสนใจคำค้นหาอื่นๆ ที่คุณสร้างได้จากผลงานของเชกสเปียร์หรือตารางข้อมูลสาธารณะอื่นๆ โปรดไปที่วิธีค้นหาตารางตัวอย่างของ BigQuery และที่เก็บ GitHub นี้

นอกจากนี้ คุณยังเรียกใช้การค้นหาโดยใช้หน้า BigQuery ใน Cloud Console ก่อนที่จะเรียกใช้ใน Apps Script ได้ด้วย หากต้องการค้นหา ให้คลิกเมนู f5fbd278915eb7aa.png แล้วไปที่ BigQuery UI > พื้นที่ทํางาน SQL (ลิงก์โดยตรง) ตัวอย่างเช่น การค้นหาของเราจะปรากฏในอินเทอร์เฟซแบบกราฟิกของ BigQuery ดังนี้

BigQueryUI

5. งานที่ 2: สร้างแผนภูมิใน Google ชีต

จุดประสงค์ของ runQuery() คือการใช้ BigQuery และส่งผลลัพธ์ข้อมูลไปยัง Google ชีต จากนั้นเราต้องสร้างแผนภูมิโดยใช้ข้อมูล มาสร้างฟังก์ชันใหม่ชื่อ createColumnChart() ที่เรียกใช้เมธอด newChart() ของชีตกัน

  1. ในเครื่องมือแก้ไขสคริปต์ของ Apps Script ให้เพิ่มฟังก์ชัน createColumnChart() ลงใน bq-sheets-slides.js หลังจาก runQuery() โค้ดจะรับชีตและขอแผนภูมิคอลัมน์ที่มีข้อมูลทั้งหมด ช่วงข้อมูลเริ่มต้นที่เซลล์ A2 เนื่องจากแถวแรกมีส่วนหัวของคอลัมน์
/**
 * Uses spreadsheet data to create a column chart.
 * @param {Spreadsheet} Spreadsheet containing results data
 * @returns {EmbeddedChart} Visualizes the results
 * @see https://developers.google.com/apps-script/reference/spreadsheet/embedded-chart
 */
function createColumnChart(spreadsheet) {
  // Retrieve the populated (first) Sheet.
  var sheet = spreadsheet.getSheets()[0];
  // Data range in Sheet is from cell A2 to B11.
  var START_CELL = 'A2';  // skip header row
  var END_CELL = 'B11';
  // Place chart on Sheet starting on cell E5.
  var START_ROW = 5;      // row 5
  var START_COL = 5;      // col E
  var OFFSET = 0;

  // Create & place chart on the Sheet using above values.
  var chart = sheet.newChart()
     .setChartType(Charts.ChartType.COLUMN)
     .addRange(sheet.getRange(START_CELL + ':' + END_CELL))
     .setPosition(START_ROW, START_COL, OFFSET, OFFSET)
     .build();
  sheet.insertChart(chart);
}
  1. ฟังก์ชัน createColumnChart() ต้องใช้พารามิเตอร์ออบเจ็กต์สเปรดชีต ดังนั้นเราจึงต้องอัปเดต runQuery() เพื่อแสดงผลออบเจ็กต์ spreadsheet ที่เราส่งไปยัง createColumnChart() ได้ เมื่อสิ้นสุด runQuery() ให้ส่งคืนออบเจ็กต์ spreadsheet หลังจากบันทึกการสร้างชีตสำเร็จแล้ว
  Logger.log('Results spreadsheet created: %s', spreadsheet.getUrl());

  // NEW: Return the spreadsheet object for later use.
  return spreadsheet;
}
  1. สร้างฟังก์ชัน createBigQueryPresentation() เพื่อเรียกใช้ทั้ง runQuery() และ createColumnChart() แนวทางปฏิบัติแนะนำคือการแยกฟังก์ชันการสร้าง BigQuery และแผนภูมิออกจากกันอย่างเป็นตรรกะ
/**
 * Runs the query, adds data and a chart to a spreadsheet.
 */
function createBigQueryPresentation() {
  var spreadsheet = runQuery();
  createColumnChart(spreadsheet);
}
  1. คุณได้ทำตาม 2 ขั้นตอนสำคัญข้างต้นแล้ว ได้แก่ การส่งคืนออบเจ็กต์สเปรดชีตและการสร้างฟังก์ชันรายการ เราต้องย้ายบรรทัดบันทึกจาก runQuery() ไปยัง createBigQueryPresentation() เพื่อให้ runQuery() ใช้งานได้มากขึ้น ตอนนี้เมธอดควรมีลักษณะดังนี้
/**
 * Runs a BigQuery query, adds data and a chart to a spreadsheet.
 */
function createBigQueryPresentation() {
  var spreadsheet = runQuery();
  Logger.log('Results spreadsheet created: %s', spreadsheet.getUrl()); // MOVED HERE
  createColumnChart(spreadsheet);
}

เมื่อทำการเปลี่ยนแปลงข้างต้น (ยกเว้น PROJECT_ID) ตอนนี้ bq-sheets-slides.js ควรมีลักษณะดังนี้ โค้ดนี้อยู่ใน step2 ของที่เก็บ GitHub ด้วย

// File name for data results
var QUERY_NAME = "Most common words in all of Shakespeare's works";
// Replace this value with your Google Cloud Console Project ID
var PROJECT_ID = '';
if (!PROJECT_ID) throw Error('Project ID is required in setup');

/**
 * Runs a BigQuery query; puts results into a sheet. You must turn on
 * the BigQuery advanced service before you can run this code.
 * @see https://developers.google.com/apps-script/advanced/bigquery#run_query
 * @see https://github.com/googleworkspace/apps-script-samples/blob/master/advanced/bigquery.gs
 *
 * @returns {Spreadsheet} Returns a spreadsheet with BigQuery results
 * @see https://developers.google.com/apps-script/reference/spreadsheet/spreadsheet
 */
function runQuery() {
  // Replace sample with your own BigQuery query.
  var request = {
    query:
        'SELECT ' +
            'LOWER(word) AS word, ' +
            'SUM(word_count) AS count ' +
        'FROM [bigquery-public-data:samples.shakespeare] ' +
        'GROUP BY word ' +
        'ORDER BY count ' +
        'DESC LIMIT 10'
  };
  var queryResults = BigQuery.Jobs.query(request, PROJECT_ID);
  var jobId = queryResults.jobReference.jobId;

  // Wait for BigQuery job completion (with exponential backoff).
  var sleepTimeMs = 500;
  while (!queryResults.jobComplete) {
    Utilities.sleep(sleepTimeMs);
    sleepTimeMs *= 2;
    queryResults = BigQuery.Jobs.getQueryResults(PROJECT_ID, jobId);
  }

  // Get all results from BigQuery.
  var rows = queryResults.rows;
  while (queryResults.pageToken) {
    queryResults = BigQuery.Jobs.getQueryResults(PROJECT_ID, jobId, {
      pageToken: queryResults.pageToken
    });
    rows = rows.concat(queryResults.rows);
  }

  // Return null if no data returned.
  if (!rows) {
    return Logger.log('No rows returned.');
  }

  // Create the results spreadsheet.
  var spreadsheet = SpreadsheetApp.create(QUERY_NAME);
  var sheet = spreadsheet.getActiveSheet();

  // Add headers to sheet.
  var headers = queryResults.schema.fields.map(function(field) {
    return field.name.toUpperCase();
  });
  sheet.appendRow(headers);

  // Append the results.
  var data = new Array(rows.length);
  for (var i = 0; i < rows.length; i++) {
    var cols = rows[i].f;
    data[i] = new Array(cols.length);
    for (var j = 0; j < cols.length; j++) {
      data[i][j] = cols[j].v;
    }
  }

  // Start storing data in row 2, col 1
  var START_ROW = 2;      // skip header row
  var START_COL = 1;
  sheet.getRange(START_ROW, START_COL, rows.length, headers.length).setValues(data);

  // Return the spreadsheet object for later use.
  return spreadsheet;
}

/**
 * Uses spreadsheet data to create a columnar chart.
 * @param {Spreadsheet} Spreadsheet containing results data
 * @returns {EmbeddedChart} Visualizes the results
 * @see https://developers.google.com/apps-script/reference/spreadsheet/embedded-chart
 */
function createColumnChart(spreadsheet) {
  // Retrieve the populated (first) sheet.
  var sheet = spreadsheet.getSheets()[0];
  // Data range in sheet is from cell A2 to B11.
  var START_CELL = 'A2';  // skip header row
  var END_CELL = 'B11';
  // Place chart on Sheet starting on cell E5.
  var START_ROW = 5;      // row 5
  var START_COL = 5;      // col E
  var OFFSET = 0;

  // Create & place chart on the sheet using above values.
  var chart = sheet.newChart()
     .setChartType(Charts.ChartType.COLUMN)
     .addRange(sheet.getRange(START_CELL + ':' + END_CELL))
     .setPosition(START_ROW, START_COL, OFFSET, OFFSET)
     .build();
  sheet.insertChart(chart);
}

/**
 * Runs a BigQuery query, adds data and a chart to a spreadsheet.
 */
function createBigQueryPresentation() {
  var spreadsheet = runQuery();
  Logger.log('Results spreadsheet created: %s', spreadsheet.getUrl());
  createColumnChart(spreadsheet);
}

ในเครื่องมือแก้ไขสคริปต์ ให้บันทึกโปรเจ็กต์สคริปต์ จากนั้นเลือก createBigQueryPresentation จากรายการฟังก์ชัน แล้วคลิกเรียกใช้ หลังจากดำเนินการเสร็จสิ้น ระบบจะสร้างสเปรดชีตอีกรายการใน Google ไดรฟ์ แต่คราวนี้จะมีแผนภูมิรวมอยู่ในชีตข้างข้อมูลด้วย

ชีตที่มีแผนภูมิ

6. งานที่ 3: ใส่ข้อมูลผลลัพธ์ลงในชุดสไลด์

ส่วนสุดท้ายของ Codelab เกี่ยวข้องกับการสร้างงานนำเสนอใน Google สไลด์ การเพิ่มชื่อและคำบรรยายลงในสไลด์ชื่อ จากนั้นสร้างสไลด์สำหรับเซลล์ข้อมูลและแผนภูมิ

  1. ในเครื่องมือแก้ไขสคริปต์ของ Apps Script ให้เพิ่มฟังก์ชัน createSlidePresentation() ลงใน bq-sheets-slides.js หลังจาก createColumnChart() การทำงานทั้งหมดในชุดสไลด์จะเกิดขึ้นในฟังก์ชันนี้ มาเริ่มด้วยการสร้างชุดสไลด์ แล้วเพิ่มชื่อและคำบรรยายแทนชื่อลงในสไลด์ชื่อเริ่มต้นกัน
/**
 * Create presentation with spreadsheet data and a chart
 * @param {Spreadsheet} Spreadsheet containing results data
 * @param {EmbeddedChart} Sheets chart to embed on a slide
 * @returns {Presentation} Slide deck with the results
  * @see https://developers.google.com/apps-script/reference/slides/presentation
 */
function createSlidePresentation(spreadsheet, chart) {
  // Create the presentation.
  var deck = SlidesApp.create(QUERY_NAME);

  // Populate the title slide.
  var [title, subtitle] = deck.getSlides()[0].getPageElements();
  title.asShape().getText().setText(QUERY_NAME);
  subtitle.asShape().getText().setText('using Google Cloud Console and Google Workspace APIs:\n' +
    'Google Apps Script, BigQuery, Sheets, Slides');
  1. ขั้นตอนถัดไปใน createSlidePresentation() คือการนำเข้าข้อมูลเซลล์จาก Google ชีตไปยังสไลด์เด็คใหม่ เพิ่มข้อมูลโค้ดนี้ลงในฟังก์ชัน
  // Data range to copy is from cell A1 to B11
  var START_CELL = 'A1';  // include header row
  var END_CELL = 'B11';
  // Add the table slide and insert an empty table on it with
  // the dimensions of the data range; fails if the sheet is empty.
  var tableSlide = deck.appendSlide(SlidesApp.PredefinedLayout.BLANK);
  var sheetValues = spreadsheet.getSheets()[0].getRange(
      START_CELL + ':' + END_CELL).getValues();
  var table = tableSlide.insertTable(sheetValues.length, sheetValues[0].length);

  // Populate the table with spreadsheet data.
  for (var i = 0; i < sheetValues.length; i++) {
    for (var j = 0; j < sheetValues[0].length; j++) {
      table.getCell(i, j).getText().setText(String(sheetValues[i][j]));
    }
  }
  1. ขั้นตอนสุดท้ายใน createSlidePresentation() คือการเพิ่มสไลด์อีก 1 สไลด์ นำเข้าแผนภูมิจากสเปรดชีต และส่งคืนออบเจ็กต์ Presentation เพิ่มข้อมูลโค้ดนี้ลงในฟังก์ชัน
  // Add a chart slide and insert the chart on it.
  var chartSlide = deck.appendSlide(SlidesApp.PredefinedLayout.BLANK);
  chartSlide.insertSheetsChart(chart);

  // Return the presentation object for later use.
  return deck;
}
  1. ตอนนี้ฟังก์ชันของเราเสร็จสมบูรณ์แล้ว ให้ดูที่ลายเซ็นอีกครั้ง createSlidePresentation() ต้องใช้ทั้งพารามิเตอร์ของสเปรดชีตและออบเจ็กต์แผนภูมิ เราได้ปรับ runQuery() เพื่อคืนค่าออบเจ็กต์ Spreadsheet แล้ว แต่เราต้องทำการเปลี่ยนแปลงที่คล้ายกันกับ createColumnChart() เพื่อให้คืนค่าออบเจ็กต์แผนภูมิ (EmbeddedChart) กลับไปที่ createColumnChart() แล้วเพิ่มข้อมูลโค้ดต่อไปนี้ที่ส่วนท้ายของฟังก์ชัน
  // NEW: Return the chart object for later use.
  return chart;
}
  1. เนื่องจากตอนนี้ createColumnChart() จะแสดงผลออบเจ็กต์แผนภูมิ เราจึงต้องบันทึกแผนภูมิลงในตัวแปร จากนั้นเราจะส่งทั้งสเปรดชีตและตัวแปรแผนภูมิไปยัง createSlidePresentation() นอกจากนี้ เนื่องจากเราบันทึก URL ของสเปรดชีตที่สร้างขึ้นใหม่แล้ว เราจึงควรบันทึก URL ของงานนำเสนอสไลด์ใหม่ด้วย อัปเดต createBigQueryPresentation() ให้มีลักษณะดังนี้
/**
 * Runs a BigQuery query, adds data and a chart to a spreadsheet,
 * and adds the data and chart to a new slide presentation.
 */
function createBigQueryPresentation() {
  var spreadsheet = runQuery();
  Logger.log('Results spreadsheet created: %s', spreadsheet.getUrl());
  var chart = createColumnChart(spreadsheet); // UPDATED
  var deck = createSlidePresentation(spreadsheet, chart); // NEW
  Logger.log('Results slide deck created: %s', deck.getUrl()); // NEW
}
  1. บันทึกและเรียกใช้ createBigQueryPresentation() อีกครั้ง อย่างไรก็ตาม ก่อนที่จะดำเนินการได้ แอปของคุณต้องได้รับสิทธิ์อีกชุดจากผู้ใช้เพื่อดูและจัดการงานนำเสนอ Google สไลด์ เมื่อตรวจสอบและอนุญาตสิทธิ์เหล่านี้แล้ว แอปจะทำงานได้เหมือนเดิม
  2. ตอนนี้คุณควรได้รับงานนำเสนอสไลด์ใหม่ที่มี 3 สไลด์ (ชื่อ ตารางข้อมูล แผนภูมิข้อมูล) นอกเหนือจากสเปรดชีตที่สร้างขึ้น ดังที่แสดงด้านล่าง

f6896f22cc3cd50d.png59960803e62f7c69.png5549f0ea81514360.png

7. บทสรุป

ยินดีด้วย คุณได้สร้างแอปพลิเคชันที่ใช้ทั้ง 2 ด้านของ Google Cloud แล้ว โดยจะส่งคำขอ Google BigQuery ที่ค้นหาชุดข้อมูลสาธารณะชุดใดชุดหนึ่ง สร้างสเปรดชีต Google ชีตเพื่อจัดเก็บผลลัพธ์ เพิ่มแผนภูมิโดยอิงตามข้อมูล และสุดท้ายสร้างงานนำเสนอ Google สไลด์ที่มีข้อมูลและผลลัพธ์ของแผนภูมิจากสเปรดชีต

ขั้นตอนเหล่านี้คือสิ่งที่คุณทำในทางเทคนิค กล่าวโดยรวมคือ คุณเปลี่ยนจากการวิเคราะห์ข้อมูลขนาดใหญ่ไปเป็นผลลัพธ์ที่นำเสนอต่อผู้มีส่วนเกี่ยวข้องได้ โดยทั้งหมดนี้เป็นแบบอัตโนมัติโดยใช้โค้ด เราหวังว่าตัวอย่างนี้จะเป็นแรงบันดาลใจให้คุณปรับแต่งเพื่อใช้กับโปรเจ็กต์ของคุณเอง เมื่อสิ้นสุด Codelab นี้ เราจะให้คำแนะนำเกี่ยวกับวิธีปรับปรุงแอปตัวอย่างนี้เพิ่มเติม

เมื่อทำการเปลี่ยนแปลงจากงานสุดท้าย (ยกเว้น PROJECT_ID) ตอนนี้ bq-sheets-slides.js ควรมีลักษณะดังนี้

/**
 * Copyright 2018 Google LLC
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at apache.org/licenses/LICENSE-2.0.
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

// File name for data results
var QUERY_NAME = "Most common words in all of Shakespeare's works";
// Replace this value with your Google Cloud Console Project ID
var PROJECT_ID = '';
if (!PROJECT_ID) throw Error('Project ID is required in setup');

/**
 * Runs a BigQuery query; puts results into a spreadsheet. You must turn on
 * the BigQuery advanced service before you can run this code.
 * @see https://developers.google.com/apps-script/advanced/bigquery#run_query
 * @see https://github.com/googleworkspace/apps-script-samples/blob/master/advanced/bigquery.gs
 *
 * @returns {Spreadsheet} Returns a spreadsheet with BigQuery results
 * @see https://developers.google.com/apps-script/reference/spreadsheet/spreadsheet
 */
function runQuery() {
  // Replace sample with your own BigQuery query.
  var request = {
    query:
        'SELECT ' +
            'LOWER(word) AS word, ' +
            'SUM(word_count) AS count ' +
        'FROM [bigquery-public-data:samples.shakespeare] ' +
        'GROUP BY word ' +
        'ORDER BY count ' +
        'DESC LIMIT 10'
  };
  var queryResults = BigQuery.Jobs.query(request, PROJECT_ID);
  var jobId = queryResults.jobReference.jobId;

  // Wait for BigQuery job completion (with exponential backoff).
  var sleepTimeMs = 500;
  while (!queryResults.jobComplete) {
    Utilities.sleep(sleepTimeMs);
    sleepTimeMs *= 2;
    queryResults = BigQuery.Jobs.getQueryResults(PROJECT_ID, jobId);
  }

  // Get all results from BigQuery.
  var rows = queryResults.rows;
  while (queryResults.pageToken) {
    queryResults = BigQuery.Jobs.getQueryResults(PROJECT_ID, jobId, {
      pageToken: queryResults.pageToken
    });
    rows = rows.concat(queryResults.rows);
  }

  // Return null if no data returned.
  if (!rows) {
    return Logger.log('No rows returned.');
  }

  // Create the results spreadsheet.
  var spreadsheet = SpreadsheetApp.create(QUERY_NAME);
  var sheet = spreadsheet.getActiveSheet();

  // Add headers to sheet.
  var headers = queryResults.schema.fields.map(function(field) {
    return field.name.toUpperCase();
  });
  sheet.appendRow(headers);

  // Append the results.
  var data = new Array(rows.length);
  for (var i = 0; i < rows.length; i++) {
    var cols = rows[i].f;
    data[i] = new Array(cols.length);
    for (var j = 0; j < cols.length; j++) {
      data[i][j] = cols[j].v;
    }
  }

  // Start storing data in row 2, col 1
  var START_ROW = 2;      // skip header row
  var START_COL = 1;
  sheet.getRange(START_ROW, START_COL, rows.length, headers.length).setValues(data);

  // Return the spreadsheet object for later use.
  return spreadsheet;
}

/**
 * Uses spreadsheet data to create a column chart.
 * @param {Spreadsheet} Spreadsheet containing results data
 * @returns {EmbeddedChart} Visualizes the results
 * @see https://developers.google.com/apps-script/reference/spreadsheet/embedded-chart
 */
function createColumnChart(spreadsheet) {
  // Retrieve the populated (first) sheet.
  var sheet = spreadsheet.getSheets()[0];
  // Data range in sheet is from cell A2 to B11.
  var START_CELL = 'A2';  // skip header row
  var END_CELL = 'B11';
  // Place chart on sheet starting on cell E5.
  var START_ROW = 5;      // row 5
  var START_COL = 5;      // col E
  var OFFSET = 0;

  // Create & place chart on the sheet using above values.
  var chart = sheet.newChart()
     .setChartType(Charts.ChartType.COLUMN)
     .addRange(sheet.getRange(START_CELL + ':' + END_CELL))
     .setPosition(START_ROW, START_COL, OFFSET, OFFSET)
     .build();
  sheet.insertChart(chart);
  
  // Return the chart object for later use.
  return chart;
}

/**
 * Create presentation with spreadsheet data and a chart
 * @param {Spreadsheet} Spreadsheet containing results data
 * @param {EmbeddedChart} Sheets chart to embed on a slide
 * @returns {Presentation} Slide deck with the results
 * @see https://developers.google.com/apps-script/reference/slides/presentation
 */
function createSlidePresentation(spreadsheet, chart) {
  // Create the presentation.
  var deck = SlidesApp.create(QUERY_NAME);

  // Populate the title slide.
  var [title, subtitle] = deck.getSlides()[0].getPageElements();
  title.asShape().getText().setText(QUERY_NAME);
  subtitle.asShape().getText().setText('using Google Cloud Console and Google Workspace APIs:\n' +
    'Google Apps Script, BigQuery, Sheets, Slides');

  // Data range to copy is from cell A1 to B11
  var START_CELL = 'A1';  // include header row
  var END_CELL = 'B11';
  // Add the table slide and insert an empty table on it with
  // the dimensions of the data range; fails if the sheet is empty.
  var tableSlide = deck.appendSlide(SlidesApp.PredefinedLayout.BLANK);
  var sheetValues = spreadsheet.getSheets()[0].getRange(
      START_CELL + ':' + END_CELL).getValues();
  var table = tableSlide.insertTable(sheetValues.length, sheetValues[0].length);

  // Populate the table with spreadsheet data.
  for (var i = 0; i < sheetValues.length; i++) {
    for (var j = 0; j < sheetValues[0].length; j++) {
      table.getCell(i, j).getText().setText(String(sheetValues[i][j]));
    }
  }

  // Add a chart slide and insert the chart on it.
  var chartSlide = deck.appendSlide(SlidesApp.PredefinedLayout.BLANK);
  chartSlide.insertSheetsChart(chart);

  // Return the presentation object for later use.
  return deck;
}

/**
 * Runs a BigQuery query, adds data and a chart to a spreadsheet,
 * and adds the data and chart to a new slide presentation.
 */
function createBigQueryPresentation() {
  var spreadsheet = runQuery();
  Logger.log('Results spreadsheet created: %s', spreadsheet.getUrl());
  var chart = createColumnChart(spreadsheet);
  var deck = createSlidePresentation(spreadsheet, chart);
  Logger.log('Results slide deck created: %s', deck.getUrl());
}

คุณดูตัวอย่างโค้ดนี้ได้ในโฟลเดอร์ final ในที่เก็บ GitHub

8. แหล่งข้อมูลเพิ่มเติม

ด้านล่างนี้คือแหล่งข้อมูลเพิ่มเติมที่จะช่วยให้คุณเจาะลึกเนื้อหาที่ครอบคลุมใน Codelab นี้ และสำรวจวิธีอื่นๆ ในการเข้าถึงเครื่องมือสำหรับนักพัฒนาซอฟต์แวร์ของ Google โดยใช้โปรแกรม

แหล่งข้อมูลสำหรับแอปพลิเคชันนี้

เอกสารประกอบ

วิดีโอ

ข่าวสารและข้อมูลอัปเดต

Codelab อื่นๆ

ระดับเริ่มต้น

ระดับกลาง

9. ขั้นตอนถัดไป: โจทย์การเขียนโค้ด

ด้านล่างนี้คือวิธีต่างๆ ที่คุณสามารถใช้เพื่อปรับปรุงหรือเพิ่มประสิทธิภาพตัวอย่างที่เราสร้างขึ้นใน Codelab นี้ รายการนี้เป็นเพียงตัวอย่างบางส่วนที่อาจเป็นแรงบันดาลใจให้คุณก้าวไปอีกขั้น

  • แอปพลิเคชัน - หากไม่ต้องการจำกัดการใช้ JavaScript หรือข้อจำกัดที่ Apps Script กำหนด พอร์ตแอปพลิเคชันนี้ไปยังภาษาโปรแกรมที่คุณชื่นชอบซึ่งใช้ REST API สำหรับ Google BigQuery, ชีต และสไลด์
  • BigQuery - ทดลองใช้การค้นหาอื่นสำหรับชุดข้อมูลเชกสเปียร์ที่คุณสนใจ คุณดูตัวอย่างการค้นหาอื่นๆ ได้ในแอปตัวอย่าง BigQuery ของ Apps Script ต้นฉบับ
  • BigQuery - ทดลองใช้ชุดข้อมูลสาธารณะอื่นๆ ของ BigQuery เพื่อค้นหาชุดข้อมูลที่เหมาะกับคุณมากที่สุด
  • BigQuery - ก่อนหน้านี้เราได้กล่าวถึงคําค้นหาอื่นๆ ที่คุณสร้างได้จากผลงานของเชกสเปียร์หรือตารางข้อมูลสาธารณะอื่นๆ โดยดูได้ที่หน้าเว็บนี้และที่เก็บ GitHub นี้
  • ชีต - ทดลองใช้แผนภูมิประเภทอื่นๆ ในแกลเลอรีแผนภูมิ
  • ชีตและ BigQuery - ใช้ชุดข้อมูลสเปรดชีตขนาดใหญ่ของคุณเอง ในปี 2016 ทีม BigQuery ได้เปิดตัวฟีเจอร์ที่ช่วยให้นักพัฒนาแอปใช้ชีตเป็นแหล่งข้อมูลได้ ดูข้อมูลเพิ่มเติมได้ที่ (Google BigQuery ผสานรวมกับ Google ไดรฟ์
  • สไลด์ - เพิ่มสไลด์อื่นๆ ลงในงานนำเสนอที่สร้างขึ้น เช่น รูปภาพหรือชิ้นงานอื่นๆ ที่เชื่อมโยงกับการวิเคราะห์บิ๊กดาต้า ต่อไปนี้คือเอกสารอ้างอิงสำหรับบริการในตัวของสไลด์
  • Google Workspace - ใช้บริการอื่นๆ ของ Google Workspace หรือบริการในตัวของ Google จาก Apps Script เช่น Gmail, ปฏิทิน, เอกสาร, ไดรฟ์, Maps, Analytics, YouTube ฯลฯ รวมถึงบริการขั้นสูงอื่นๆ ดูข้อมูลเพิ่มเติมได้ที่ภาพรวมการอ้างอิงสำหรับทั้งบริการในตัวและบริการขั้นสูง