如何在我的 google sheet 上以 blob 格式将图像存储到我的 mysql 数据库中?

How to get the image stored into my mysql database in blob format on my google sheet?

我有一个 google sheet 通过 Google 脚本连接到我的 MySQL 数据库。 我能够检索我想要的所有文本数据,而不是存储在数据库中的 blob。 这是 php 代码:

$insert = $conn->query("INSERT into images (image) VALUES ('$base64Img')");

为了说明清楚,我只留了一个字段

table 中的 blob 列设置为“LONGBLOB”。 如何在我的 google sheet 中将我的 BLOB 查看为图像?

这是我尝试过的:

function readFromTable() {
  var conn = Jdbc.getConnection(url, username, password);
  var stmt = conn.createStatement();
  stmt.setMaxRows(1000);
  var results = stmt.executeQuery('SELECT image FROM images');
  var numCols = results.getMetaData().getColumnCount();
  var spreadsheet = SpreadsheetApp.getActive();
  var sheet = spreadsheet.getSheetByName('Sheet1');
  var arr=[];
  while (results.next()) {
    var arr = [];
    for (var col = 0; col < numCols; col++) {
      arr.push(results.getBlob(col + 1));
    }
    sheet.appendRow(arr);
  }

  results.close();
  stmt.close();
}

我没有收到任何错误消息,但在我的 sheet 上它打印:单元格中的 JdbcBlob 而不是实际图像。 我想将图像放入我的 google sheet

的单元格中
const jdbcBlob = results.getBlob(col + 1);
const appsScriptBlob = jdbcBlob.getAppsScriptBlob();
sheet.insertImage(appsScriptBlob,1,1);

//if  image data is base64 encoded:
sheet.insertImage(Utilities.newBlob(Utilities.base64Decode(appsScriptBlob.getDataAsString())),1,1)

另一种方法是使用 getBytes():

获取字节数组
const byteArr = results.getBytes(col + 1);
//if  image data is base64 encoded:
sheet.insertImage(Utilities.newBlob(Utilities.base64Decode(Utilities.newBlob(byteArr).getDataAsString())),1,1)