javascript - Apps 脚本,将工作表范围转换为 Blob

标签 javascript google-apps-script google-bigquery

背景: 我正在尝试从 Google 表格上传单行数据并将其附加到 BigQuery 表。

方法:我一直在使用https://developers.google.com/apps-script/advanced/bigquery为此,我使用自己的工作表和来自特定行的数据,而不是示例中的数据文件:

 var file = SpreadsheetApp.getActiveSpreadsheet();
  var currentSheet = file.getSheetByName(name);
  var lastRow = currentSheet.getLastRow()
   var lastC = currentSheet.getLastColumn()
   var rows = currentSheet.getRange(2,1,1,lastC).getValues();

“rows”是要导入BQ的数据行。我已经尝试了很多事情,并且根据另一个 StackOverflow question , "rowsCSV"使值的二维数组 CSV。

  var rowsCSV = rows.join("\n");

 var data = rowsCSV.getBlob().setContentType('application/octet-stream');

问题:每次运行该函数时,我都会收到错误消息“无法在对象 Blob 中找到函数 getBlob。”或“无法将数组转换为 (class)[][]”或“无法在对象中找到函数 getBlob” Tue May 16 2017 00:00:00 GMT+0200 (CEST),58072.4,,,,,,,,,,,test”,其中最后一位(“Tue May..”)是该行的实际数据.

我在这里做错了什么?

最佳答案

数组没有getBlob 方法。您必须使用 Utilities.newBlob() 从字符串中获取 blob。您可以在相同的 here 上找到文档

 var rowsCSV = rows.join("\n");
 var blob = Utilities.newBlob(rowsCSV, "text/csv")
 Logger.log(blob.getDataAsString())
 var data = blob.setContentType('application/octet-stream');

等价地你可以这样做

var rowsCSV = rows.join("\n");
var data = Utilities.newBlob(rowsCSV, 'application/octet-stream')

关于javascript - Apps 脚本,将工作表范围转换为 Blob,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44002917/

相关文章:

javascript - 缩小 : Using regex to remove linebreaks from JavaScript code

javascript - 如何在单个声明中将多个局部变量设置为相同的值?

javascript - 无法获取 Firefox 的 html 元素的高度和宽度

javascript - 如何在 .run 函数中传递 blob

google-apps-script - 使用 google apps 脚本计算 gmail 中的电子邮件 - for 循环限制为 500 次迭代

google-apps-script - 在谷歌脚本中使用自定义顺序对列进行排序

google-bigquery - bigquery bq 负载 - 无法确定描述的表

javascript - 如何在其他字符串中回显字符串?

python - 使用 python 将 BigQuery 查询结果写入表中

google-bigquery - 插入行时写入的数据不足