Google Sheet轉貼POC === 方法1:.NET Core Application (Windows Schedule) -- ### 1. 前置作業 * Add package Google.Apis.Sheets.v4 ``` dotnet add package Google.Apis.Sheets.v4 ``` * Modiify *.csproj Add a new ItemGroup into csproj ``` <Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <OutputType>Exe</OutputType> <TargetFramework>netcoreapp1.1</TargetFramework> </PropertyGroup> <ItemGroup> <PackageReference Include="Google.Apis.Sheets.v4"> <Version>1.22.0.806</Version> </PackageReference> </ItemGroup> <ItemGroup> <None Update="client_secret.json"> <CopyToOutputDirectory>Always</CopyToOutputDirectory> </None> </ItemGroup> </Project> ``` ### 2. 程式撰寫 #### Get Data ``` static void ReadEntries() { var range = $"{sheet}!A:F"; SpreadsheetsResource.ValuesResource.GetRequest request = service.Spreadsheets.Values.Get(SpreadsheetId, range); var response = request.Execute(); IList<IList<object>> values = response.Values; if (values != null && values.Count > 0) { foreach (var row in values) { // Print columns A to F, which correspond to indices 0 and 4. Console.WriteLine("{0} | {1} | {2} | {3} | {4} | {5}", row[0], row[1], row[2], row[3], row[4], row[5]); } } else { Console.WriteLine("No data found."); } } ``` ![](https://i.imgur.com/A9ibfQV.png) #### Insert Data ``` static void CreateEntry() { var range = $"{sheet}!A:F"; var valueRange = new ValueRange(); var oblist = new List<object>() { "Hello!", "This", "was", "insertd", "via", "C#" }; valueRange.Values = new List<IList<object>> { oblist }; var appendRequest = service.Spreadsheets.Values.Append(valueRange, SpreadsheetId, range); appendRequest.ValueInputOption = SpreadsheetsResource.ValuesResource.AppendRequest.ValueInputOptionEnum.USERENTERED; var appendReponse = appendRequest.Execute(); } ``` ![](https://i.imgur.com/aFrqe35.png) #### Update Data ``` static void UpdateEntry() { var range = $"{sheet}!D543"; var valueRange = new ValueRange(); var oblist = new List<object>() { "updated" }; valueRange.Values = new List<IList<object>> { oblist }; var updateRequest = service.Spreadsheets.Values.Update(valueRange, SpreadsheetId, range); updateRequest.ValueInputOption = SpreadsheetsResource.ValuesResource.UpdateRequest.ValueInputOptionEnum.USERENTERED; var appendReponse = updateRequest.Execute(); } ``` #### Delete Data ``` static void DeleteEntry() { var range = $"{sheet}!A543:F"; var requestBody = new ClearValuesRequest(); var deleteRequest = service.Spreadsheets.Values.Clear(requestBody, SpreadsheetId, range); var deleteReponse = deleteRequest.Execute(); } ``` ### 3. Reference * https://stackoverflow.com/questions/725627/accessing-google-spreadsheets-with-c-sharp-using-google-data-api * https://www.twilio.com/blog/2017/03/google-spreadsheets-and-net-core.html * https://developers.google.com/sheets/api/quickstart/dotnet 方法2:Apps Script -- ### 1. 進入[Apps Script](https://www.google.com/script/start/) 點擊Start Scripting ![](https://i.imgur.com/hpWNOSf.png) ### 2. 建立新專案 ![](https://i.imgur.com/19ljkwP.png) ### 3. 新增Google Sheets API 服務 ![](https://i.imgur.com/9030aqX.png) ### 4. 程式撰寫 紅框處進行javascript撰寫,上方可以執行及偵錯 ![](https://i.imgur.com/VFhq9iv.png) #### Get Data ``` function logNamesAndMajors() { var spreadsheetId = '1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms'; var rangeName = 'Class Data!A2:E'; var values = Sheets.Spreadsheets.Values.get(spreadsheetId, rangeName).values; if (!values) { Logger.log('No data found.'); } else { Logger.log('Name, Major:'); for (var row = 0; row < values.length; row++) { // Print columns A and E, which correspond to indices 0 and 4. Logger.log(' - %s, %s', values[row][0], values[row][4]); } } } ``` #### Append Data ``` var values = [ [ // Cell values ... ] // Additional rows ... ]; var valueRange = Sheets.newRowData(); valueRange.values = values; var appendRequest = Sheets.newAppendCellsRequest(); appendRequest.sheetId = spreadsheetId; appendRequest.rows = [valueRange]; var result = Sheets.Spreadsheets.Values.append(valueRange, spreadsheetId, range, { valueInputOption: valueInputOption }); ``` ### 5. 排程設定 點擊左側清單鬧鐘圖示可設定觸發條件 ![](https://i.imgur.com/LJI4vJS.png) ![](https://i.imgur.com/4N0mMhm.png) ### 6. Reference * https://developers.google.com/sheets/api/quickstart/apps-script