背景: 我正在尝试从 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/