JSFiddle - React, Tailwind, and code Playground

HTML

<!DOCTYPE html>
<html lang="zh-TW">
<head>
  <meta charset="utf-8" />
  <title>V3 - Query (類 SQL)</title>
  <script src="https://www.gstatic.com/charts/loader.js"></script>
</head>
<body>
  <h2>Version 3 — 使用 Google Visualization Query 語法(select / where / order)</h2>

  <p>
    查詢:<input id="queryInput" value="select A, C, D where D > 1 order by D desc" style="width:60%"/>
    <button id="runBtn">執行查詢</button>
  </p>

  <div id="demo">準備就緒,請輸入查詢後按「執行查詢」。</div>

  <script>
    // 請替換成你的試算表 ID 與工作表名稱
	var SHEET_ID = "1QScI5d56Kh-LGywY4WR6EvRGPcalFQYUAdqMxbFVDvk";
    var SHEET_NAME = "工作表1"; // 或你自己的工作表名稱

    google.charts.load('current', { packages: ['corechart'] });
    google.charts.setOnLoadCallback(setup);

    var baseUrl;
    function setup() {
      baseUrl = 'https://docs.google.com/spreadsheets/d/' + SHEET_ID + '/gviz/tq?sheet=' + encodeURIComponent(SHEET_NAME);
      document.getElementById('runBtn').addEventListener('click', runQuery);
    }

    function runQuery() {
      var q = document.getElementById('queryInput').value;
      document.getElementById('demo').innerText = "查詢中:" + q;
      var query = new google.visualization.Query(baseUrl);
      query.setQuery(q);
      query.send(handleResponse);
    }

    function handleResponse(response) {
      if (response.isError()) {
        document.getElementById('demo').innerText = 'Query 錯誤:' + response.getMessage() + ' — ' + response.getDetailedMessage();
        return;
      }

      var data = response.getDataTable();
      var rows = data.getNumberOfRows();
      var cols = data.getNumberOfColumns();

      var html = "<strong>查到 " + rows + " 筆</strong><br><br>";
      html += "<table border='1' cellpadding='4'><tr>";
      for (var c = 0; c < cols; c++) {
        html += "<th>" + data.getColumnLabel(c) + "</th>";
      }
      html += "</tr>";

      for (var r = 0; r < rows; r++) {
        html += "<tr>";
        for (var c = 0; c < cols;...