You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过MySQL查询结果生成数据表并绘制图表?

解决方案:从MySQL查询结果生成图表并上传到Drive

方法1:使用Google Apps Script Charts服务(循环添加行)

完全可以通过循环遍历查询得到的数组,调用addRow()构建数据表。以下是整合查询、绘图、上传Drive的完整代码:

function useDBAndGenerateChart() {
  // 1. 连接MySQL并查询数据
  var conn = Jdbc.getCloudSqlConnection("jdbc:google:mysql://my_connection_name","user","password");
  const stmt = conn.createStatement();
  let query = stmt.executeQuery('SELECT * FROM my_table');
  let arr = [];
  while(query.next()){
    arr.push([
      query.getString(1),
      query.getFloat(2)
    ]);
  }
  conn.close(); // 务必关闭数据库连接,避免资源泄漏

  // 2. 初始化图表数据表并添加列定义
  var dataTable = Charts.newDataTable()
    .addColumn(Charts.ColumnType.STRING, "标签") // 对应查询结果第一列(字符串类型)
    .addColumn(Charts.ColumnType.NUMBER, "数值") // 对应查询结果第二列(浮点型)
    .build();

  // 循环遍历数组,批量添加数据行
  arr.forEach(row => {
    dataTable.addRow(row);
  });

  // 3. 创建图表(示例为柱状图,可替换为折线图/饼图等)
  var chart = Charts.newColumnChart()
    .setDataTable(dataTable)
    .setTitle("MySQL查询结果图表")
    .setXAxisTitle("分类")
    .setYAxisTitle("数值")
    .setDimensions(600, 400) // 设置图表像素尺寸
    .build();

  // 4. 将图表上传至Google Drive
  var targetFolder = DriveApp.getFolderById("你的目标文件夹ID"); // 替换为实际文件夹ID
  var chartBlob = chart.getAs('image/png');
  var chartFile = targetFolder.createFile(chartBlob)
    .setName("查询图表_" + new Date().toISOString().slice(0,10)); // 按日期命名文件

  // 输出并返回Drive文件链接,供Appsheet调用
  Logger.log("图表访问链接:" + chartFile.getUrl());
  return chartFile.getUrl();
}

方法2:使用Google Visualization DataTable(更灵活的批量处理)

如果需要更复杂的数据转换或图表配置,可以直接使用Google Visualization的DataTable,支持批量添加行,无需手动循环:

function useVisualizationAndGenerateChart() {
  // 1. 连接MySQL并查询数据(同方法1)
  var conn = Jdbc.getCloudSqlConnection("jdbc:google:mysql://my_connection_name","user","password");
  const stmt = conn.createStatement();
  let query = stmt.executeQuery('SELECT * FROM my_table');
  let arr = [];
  while(query.next()){
    arr.push([
      query.getString(1),
      query.getFloat(2)
    ]);
  }
  conn.close();

  // 2. 创建Visualization DataTable并批量添加行
  var data = new google.visualization.DataTable();
  data.addColumn('string', '标签');
  data.addColumn('number', '数值');
  data.addRows(arr); // 直接传入数组批量添加所有行

  // 3. 转换为Charts服务兼容的数据表格式
  var chartData = Charts.newDataTable(data).build();

  // 4. 创建并上传图表(同方法1)
  var chart = Charts.newColumnChart()
    .setDataTable(chartData)
    .setTitle("Visualization生成的查询图表")
    .setDimensions(600, 400)
    .build();

  var targetFolder = DriveApp.getFolderById("你的目标文件夹ID");
  var chartBlob = chart.getAs('image/png');
  var chartFile = targetFolder.createFile(chartBlob)
    .setName("Visualization图表_" + new Date().toISOString().slice(0,10));
  
  Logger.log("图表访问链接:" + chartFile.getUrl());
  return chartFile.getUrl();
}

关键注意事项

  • 需在Apps Script编辑器的「资源」>「高级Google服务」中,启用Charts API和Drive API。
  • 图表类型可按需替换,例如newLineChart()、newPieChart()等。
  • 确保Drive目标文件夹设置了合适的共享权限,保证Appsheet能正常访问生成的图片链接。

内容的提问来源于stack exchange,提问作者Andrewncf

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 18:35:23