C# 如何在c语言中接受用户输入并更新Google电子表格#
我有一个谷歌电子表格,作为一个文具室的库存清单。事实证明,这是一个具有挑战性的c#构建,因为我需要用户输入他们想要多少笔,并更新电子表格中的数量字段。我可以通过硬编码来完成这一点,但是如何改变它以获取用户输入C# 如何在c语言中接受用户输入并更新Google电子表格#,c#,google-sheets-api,C#,Google Sheets Api,我有一个谷歌电子表格,作为一个文具室的库存清单。事实证明,这是一个具有挑战性的c#构建,因为我需要用户输入他们想要多少笔,并更新电子表格中的数量字段。我可以通过硬编码来完成这一点,但是如何改变它以获取用户输入 using Google.Apis.Auth.OAuth2; using Google.Apis.Services; using Google.Apis.Sheets.v4; using Google.Apis.Sheets.v4.Data; using System; using Sys
using Google.Apis.Auth.OAuth2;
using Google.Apis.Services;
using Google.Apis.Sheets.v4;
using Google.Apis.Sheets.v4.Data;
using System;
using System.Collections.Generic;
using System.IO;
//Database https://docs.google.com/spreadsheets/d/HIDDEN/edit?ts=5e53e5e8#gid=0
/*
STOCK LIST
Col A = Item
Col B = Item Code
Col C = Qty
Col D = Unit Price
Col E = Date Added
Col F = Stock updated(After delivery)
COL G = Total Cost
Col H = Total Expenditure
USERS
Last Name First Name UserName PassWord
Knight Fiona FK1 Cat
Wilson Euan EW1 StarWars
Mansfield Graham GM1 Snarler
Account Test TA1 Test
*/
namespace StockList
{
class Program
{
//Read The Sheet
static readonly string[] Scopes = { SheetsService.Scope.Spreadsheets };
static readonly string ApplicationName = "Stock List";
static readonly string SpreadsheetId = "HIDDEN";
static readonly string sheet = "Stock";
static readonly string sheet1 = "Employees";
static SheetsService service;
//Update the database
static void Main(string[] args)
{
GoogleCredential credential;
using (var stream = new FileStream("Stock.json", FileMode.Open, FileAccess.Read))
{
credential = GoogleCredential.FromStream(stream)
.CreateScoped(Scopes);
}
// Create Google Sheets API service.
service = new SheetsService(new BaseClientService.Initializer()
{
HttpClientInitializer = credential,
ApplicationName = ApplicationName,
});
Console.WriteLine("Welcome to the Stationery Management Service!");
//Console.WriteLine("Please enter your Username");
//var userName = Console.ReadLine();
Console.WriteLine("\nCurrent Stock Level: \n");
ReadEntriesStock();
UpdateEntry();
Console.WriteLine("\nNew Stock:\n");
ReadEntriesStock();
Console.WriteLine("\nEmployees List:\n");
ReadEntriesEmployees();
Console.WriteLine("\n");
UpdateEntryEmployee();
}
static void ReadEntriesStock()
{
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)
{
Console.ForegroundColor = ConsoleColor.Yellow;
Console.WriteLine(" {0,8} {1} {2,5} {3,2} {4,2} {5} {6,6} {1,2} {8,7}", "Item", "|", "Stock Code", "|", "Quantity", "|", "Price", "|", "Date");
Console.WriteLine(" --------------------------------------------------------");
Console.ResetColor();
foreach (var row in values)
{
// Print columns A to E, which correspond to indices 0 and 4.
Console.WriteLine("{0,10} |{1,8} | {2,5} |{3,7} | {4,5}", row[0], row[1], row[2], row[3], row[4]);
}
}
else
{
Console.WriteLine("No data found.");
}
}
static void ReadEntriesEmployees()
{
var range = $"{sheet1}!A:B";
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 E, which correspond to indices 0 and 4.
Console.WriteLine("{0,5} | {1,5}", row[0], row[1]);
}
}
else
{
Console.WriteLine("No data found.");
}
}
static void UpdateEntry()
{
var range = $"{sheet}!C1";
var valueRange = new ValueRange();
var oblist = new List<object>() { "87" };
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();
}
static void UpdateEntryEmployee()
{
var range = $"{sheet1}!C6";
var valueRange = new ValueRange();
var oblist = new List<object>() { "" };
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();
}
}
}
使用Google.api.Auth.OAuth2;
使用Google.api.Services;
使用Google.api.Sheets.v4;
使用Google.api.Sheets.v4.Data;
使用制度;
使用System.Collections.Generic;
使用System.IO;
//数据库https://docs.google.com/spreadsheets/d/HIDDEN/edit?ts=5e53e5e8#gid=0
/*
存货清单
A列=项目
Col B=项目代码
列C=数量
Col D=单价
列E=添加的日期
Col F=库存更新(交付后)
G列=总成本
Col H=总支出
使用者
姓氏名字用户名密码
骑士菲奥娜FK1猫
威尔逊尤安EW1星球大战
曼斯菲尔德·格雷厄姆GM1咆哮者
帐户测试TA1测试
*/
命名空间库存列表
{
班级计划
{
//读这张纸
静态只读字符串[]范围={SheetsService.Scope.Spreadsheets};
静态只读字符串ApplicationName=“股票列表”;
静态只读字符串SpreadsheetId=“HIDDEN”;
静态只读字符串sheet=“Stock”;
静态只读字符串sheet1=“Employees”;
静态纸张服务;
//更新数据库
静态void Main(字符串[]参数)
{
谷歌认证证书;
使用(var stream=newfilestream(“Stock.json”、FileMode.Open、FileAccess.Read))
{
credential=GoogleCredential.FromStream(流)
.CreateScoped(范围);
}
//创建GoogleSheetsAPI服务。
服务=新的SheetsService(新的BaseClientService.Initializer()
{
HttpClientInitializer=凭证,
ApplicationName=ApplicationName,
});
Console.WriteLine(“欢迎使用文具管理服务!”);
//Console.WriteLine(“请输入您的用户名”);
//var userName=Console.ReadLine();
Console.WriteLine(“\n当前库存水平:\n”);
ReadEntriesStock();
UpdateEntry();
Console.WriteLine(“\n新股票:\n”);
ReadEntriesStock();
Console.WriteLine(“\n员工列表:\n”);
ReadEntriesEmployees();
Console.WriteLine(“\n”);
UpdateEntryEmployee();
}
静态void ReadEntriesStock()
{
变量范围=$“{sheet}!A:F”;
电子表格Resource.ValuesResource.GetRequest请求=
服务.Spreadsheets.Values.Get(电子表格ID,范围);
var response=request.Execute();
IList值=响应值;
if(值!=null&&values.Count>0)
{
Console.ForegroundColor=ConsoleColor.Yellow;
Console.WriteLine(“{0,8}{1}{2,5}{3,2}{4,2}{5}{6,6}{1,2}{8,7}”、“项目”、“库存代码”、“库存代码”、“数量”、“价格”、“日期”);
Console.WriteLine(“-------------------------------------------------------------------------------------”);
Console.ResetColor();
foreach(值中的var行)
{
//打印对应于索引0和4的A列到E列。
WriteLine({0,10}{1,8}{2,5}{3,7}{4,5}),第[0]行,第[1]行,第[2]行,第[3]行,第[4]行);
}
}
其他的
{
Console.WriteLine(“未找到数据”);
}
}
静态void ReadEntriesEmployees()
{
变量范围=$“{sheet1}!A:B”;
电子表格Resource.ValuesResource.GetRequest请求=
服务.Spreadsheets.Values.Get(电子表格ID,范围);
var response=request.Execute();
IList值=响应值;
if(值!=null&&values.Count>0)
{
foreach(值中的var行)
{
//打印对应于索引0和4的A列到E列。
WriteLine(“{0,5}{1,5}”,第[0]行,第[1]行);
}
}
其他的
{
Console.WriteLine(“未找到数据”);
}
}
静态void UpdateEntry()
{
变量范围=$“{sheet}!C1”;
var valueRange=新的valueRange();
var oblist=new List(){“87”};
valueRange.Values=新列表{oblist};
var updateRequest=service.Spreadsheets.Values.Update(valueRange,SpreadsheetId,range);
updateRequest.ValueInputOption=电子表格Resource.ValuesResource.updateRequest.ValueInputOptionEnum.USERENTERED;
var appendReponse=updateRequest.Execute();
}
静态void UpdateEntryEmployee()
{
变量范围=$“{sheet1}!C6”;
var valueRange=新的valueRange();
var oblist=new List(){“};
valueRange.Values=新列表{oblist};
var updateRequest=service.Spreadsheets.Values.Update(valueRange,SpreadsheetId,range);
updateRequest.ValueInputOption=电子表格Resource.ValuesResource.updateRequest.ValueInputOptionEnum.USERENTERED;
var appendReponse=updateRequest.Execute();
}
}
}
我创建了一个可重用的函数,该函数采用管道分隔的字符串,并将其逐行写入指定的工作表中。我在DLL中执行此操作,因此通常避免读取/写入控制台
private string GoogleSheetsUpdate(string fileId, string inputOption, string inputRange, string inputText) {
//PURPOSE: SETS VALUES IN A RANGE OF A SPREADSHEET.
//REFERENCE: https://developers.google.com/sheets/api/reference/rest/v4/spreadsheets.values/update
string result = "Success";
try {
//HOW THE INPUT DATA SHOULD BE INTERPRETED:
//THE VALUES WILL BE PARSED AS IF THE USER TYPED THEM INTO THE UI. NUMBERS WILL STAY AS NUMBERS, BUT STRINGS MAY BE CONVERTED
//TO NUMBERS, DATES, ETC.FOLLOWING THE SAME RULES THAT ARE APPLIED WHEN ENTERING TEXT INTO A CELL VIA THE GOOGLE SHEETS UI.
SpreadsheetsResource.ValuesResource.UpdateRequest.ValueInputOptionEnum valueInputOption = SpreadsheetsResource.ValuesResource.UpdateRequest.ValueInputOptionEnum.USERENTERED;
inputOption = inputOption.ToLower();
if (inputOption == "raw") {
//THE VALUES THE USER HAS ENTERED WILL NOT BE PARSED AND WILL BE STORED AS-IS.
valueInputOption = SpreadsheetsResource.ValuesResource.UpdateRequest.ValueInputOptionEnum.RAW;
}
//ASSIGN VALUES TO DESIRED PROPERTIES OF REQUESTBODY; ALL EXISTING PROPERTIES WILL BE REPLACED
string[] oRow = inputText.Split('|');
ValueRange oBody = new ValueRange {
Values = new List<IList<object>> { oRow },
};
SpreadsheetsResource.ValuesResource.UpdateRequest oRequest = sheetsService.Spreadsheets.Values.Update(oBody, fileId, inputRange);
oRequest.ValueInputOption = valueInputOption;
UpdateValuesResponse oResponse = oRequest.Execute();
} catch (Exception e) {
result = "Google Sheets API: " + e.Message;
}
return result;
//RESPONSE: IF SUCCESSFUL, THE RESPONSE BODY CONTAINS AN INSTANCE OF UPDATEVALUESRESPONSE.
}
私有字符串GoogleSheetsUpdate(字符串文件ID、字符串输入选项、字符串输入范围、字符串输入文本){
//用途:设置电子表格范围内的值。
//参考:https://developers.google.com/sheets/api/reference/rest/v4/spreadsheets.val