您可以使用Google Apps Script来编写一个脚本,将CSV或XLS文件从Google Drive上传到BigQuery或电子表格。以下是一个示例代码,演示了如何完成这个任务:
// 设置BigQuery项目ID和数据集ID
var projectId = 'your-project-id';
var datasetId = 'your-dataset-id';
// 设置电子表格的ID
var spreadsheetId = 'your-spreadsheet-id';
// 在Google Drive上选择CSV或XLS文件并上传到BigQuery或电子表格
function uploadFileToBigQueryOrSpreadsheet() {
// 弹出对话框以选择文件
var file = DriveApp.getFileById(FilePicker.getFiles()[0].id);
// 获取文件的数据并解析为二维数组
var data = parseFileData(file);
// 将数据上传到BigQuery
uploadDataToBigQuery(data);
// 将数据上传到电子表格
uploadDataToSpreadsheet(data);
}
// 解析文件数据为二维数组
function parseFileData(file) {
var data = [];
var fileId = file.getId();
// 检查文件类型
if (file.getMimeType() === 'application/vnd.ms-excel') {
// 如果是XLS文件,则将其转换为Google Sheets文件
var newFile = Drive.Files.copy({}, fileId, {convert: true});
fileId = newFile.id;
}
// 打开文件并读取数据
var ss = SpreadsheetApp.openById(fileId);
var sheet = ss.getSheets()[0];
var range = sheet.getDataRange();
var values = range.getValues();
// 将数据存储到二维数组中
for (var i = 0; i < values.length; i++) {
var row = [];
for (var j = 0; j < values[i].length; j++) {
row.push(values[i][j]);
}
data.push(row);
}
return data;
}
// 将数据上传到BigQuery
function uploadDataToBigQuery(data) {
// 创建BigQuery服务
var service = BigQuery.Jobs;
// 创建数据表资源
var resource = {
configuration: {
load: {
destinationTable: {
projectId: projectId,
datasetId: datasetId,
tableId: 'your-table-id'
},
sourceFormat: 'CSV',
sourceUris: ['gs://your-bucket/your-file.csv'],
autodetect: true,
writeDisposition: 'WRITE_TRUNCATE'
}
}
};
// 创建BigQuery作业
var job = service.insert(resource, projectId);
// 等待作业完成
while (!job.status.errorResult && job.status.state !== 'DONE') {
Utilities.sleep(1000);
job = service.get(job.jobReference.projectId, job.jobReference.jobId);
}
// 检查作业状态
if (job.status.errorResult) {
Logger.log('Error uploading data to BigQuery: ' + job.status.errorResult.message);
} else {
Logger.log('Data uploaded to BigQuery successfully!');
}
}
// 将数据上传到电子表格
function uploadDataToSpreadsheet(data) {
// 打开电子表格并选择第一个工作表
var ss = SpreadsheetApp.openById(spreadsheetId);
var sheet = ss.getSheets()[0];
// 清空工作表中的现有数据
sheet.clear();
// 将数据写入工作表
for (var i = 0; i < data.length; i++) {
sheet.appendRow(data[i]);
}
Logger.log('Data uploaded to spreadsheet successfully!');
}
请注意,在使用此代码之前,您需要先在Google Cloud Console中启用BigQuery API和Google Sheets API,并授予脚本适当的权限。另外,您需要将代码中的"your-project-id"、"your-dataset-id"、"your-spreadsheet-id"和"your-table-id"替换为您自己的项目、数据集、电子表格和表的ID。
请注意,此代码仅仅是一个示例,具体的实现可能因为您的需求而有所不同。您可能需要根据您的具体要求对代码进行修改和调
上一篇:app监控数据