Files
DiunaBI/WebAPI/Exports/googleSheet.export.cs

57 lines
2.2 KiB
C#
Raw Normal View History

2023-08-23 17:30:25 +02:00
using System.Globalization;
using Google.Apis.Drive.v3.Data;
2023-02-22 12:12:38 +01:00
using Google.Apis.Sheets.v4;
using Google.Apis.Sheets.v4.Data;
using WebAPI.Models;
using static Google.Apis.Drive.v3.FilesResource;
namespace WebAPI.Exports
{
public class googleSheetExport
{
private GoogleDriveHelper googleDriveHelper;
private SpreadsheetsResource.ValuesResource googleSheetValues;
2023-08-23 17:30:25 +02:00
private readonly IConfiguration configuration;
public googleSheetExport(
GoogleDriveHelper _googleDriveHelper,
SpreadsheetsResource.ValuesResource _googleSheetValues,
IConfiguration _configuration)
2023-02-22 12:12:38 +01:00
{
googleDriveHelper = _googleDriveHelper;
googleSheetValues = _googleSheetValues;
2023-08-23 17:30:25 +02:00
configuration = _configuration;
2023-02-22 12:12:38 +01:00
}
public void export(Layer layer)
{
try
{
2023-08-28 16:18:50 +02:00
List<IList<object>> data = new List<IList<object>>() { new List<object>() { layer.Name! } };
2023-02-22 12:12:38 +01:00
foreach (Record record in layer.Records!)
{
2023-08-21 13:00:05 +02:00
data.Add(new List<object> { record.Code!, record.Value1! });
2023-02-22 12:12:38 +01:00
}
Google.Apis.Drive.v3.Data.File body = new Google.Apis.Drive.v3.Data.File();
2023-08-23 17:30:25 +02:00
body.Name = $"{DateTime.Now.ToString(new CultureInfo("pl-PL"))}";
2023-02-22 12:12:38 +01:00
body.MimeType = "application/vnd.google-apps.spreadsheet";
2023-08-23 17:30:25 +02:00
body.Parents = new List<string?> { configuration["exportDirectory"] };
2023-02-22 12:12:38 +01:00
CreateRequest request = googleDriveHelper.Service.Files.Create(body);
var file = request.Execute();
string sheetId = file.Id;
var range = $"Sheet1!A1:B${data.Count}";
ValueRange valueRange = new ValueRange() { Values = data};
var updateRequest = googleSheetValues.Update(valueRange, sheetId, range);
updateRequest.ValueInputOption = SpreadsheetsResource.ValuesResource.UpdateRequest.ValueInputOptionEnum.RAW;
updateRequest.Execute();
} catch (Exception e)
{
Console.WriteLine(e.ToString());
}
}
}
}