В этой ссылке https://developers.google.com/apps-script/advanced/bigquery,
Чтобы загрузить данные CSV в BigQuery, они используют:
var file = DriveApp.getFileById(csvFileId);
var data = file.getBlob().setContentType('application/octet-stream');
// Create the data upload job.
var job = {
configuration: {
load: {
destinationTable: {
projectId: projectId,
datasetId: datasetId,
tableId: tableId
},
skipLeadingRows: 1
}
}
};
job = BigQuery.Jobs.insert(job, projectId, data);
Как я понимаю, они отправляют BLOB-объект BigQuery file.getBlob().setContentType('application/octet-stream');
,что не дружелюбно
Как отправить JSON в BigQuery в Apps Script?
С библиотекой @google-cloud/bigquery
(используется в проекте вне Apps Script),Я могу сделать что-то вроде этого:
https://cloud.google.com/bigquery/streaming-data-into-bigquery#streaminginsertexamples
// Import the Google Cloud client library
const { BigQuery } = require('@google-cloud/bigquery')
const moment = require('moment')
exports.insertUsageLog = async (userId) => {
const datasetId = 'usage'
const tableId = 'logs'
const rows = [
// The JSON data is collected here
{
timestamp: moment.utc().toISOString(),
userId,
// Something else ...
},
]
// Create a client
const bigqueryClient = new BigQuery()
// Insert data into a table
await bigqueryClient
.dataset(datasetId)
.table(tableId)
.insert(rows)
console.log(`Inserted ${rows.length} rows`)
}