【发布时间】:2020-12-04 15:05:04
【问题描述】:
我看过很多关于在 C# 中为 Google Sheets API v4 查找给定列的最后一行的帖子,但我似乎找不到任何关于查找给定行的最后一列的信息。我没有发现任何关于这个的问题 - 但如果我弄错了,请引导我到正确的地方。
在我的工作表中,每列都有标题。随着时间的推移,我预计我将需要根据需要添加或删除列 - 不必每次发生这种情况时都更新我的代码。
我正处于编写从 Google 表格收集数据的代码的开始阶段 - 但这是我目前所拥有的。我知道我需要更改变量“范围”的写入方式,只是不知道是什么。
static void ReadEntries()
{
var range = $"{sheet}!A1:ET";
var request = service.Spreadsheets.Values.Get(SpreadsheetId, range);
var response = request.Execute();
var values = response.Values;
if(values != null && values.Count>0)
{
foreach (var row in values)
{
System.Diagnostics.Debug.WriteLine("{0} | {1} | {2}", row[0], row[1], row[2]);
}
}
else
{
System.Diagnostics.Debug.WriteLine("No data found.");
}
}
编辑:已解决
为此,我使用了纳粹 A 提供的伪代码。我遇到了if(row[col]) 的问题,包括强制转换和其他系统异常。事实证明foreach 允许我们不必检查row[col] 是否在范围内。以下是我的最终代码,以防将来有人需要它。我计划让var range = $"{sheet}!A1:ET; 中声明的列“ET”足够大,以容纳将来添加到我的电子表格中的任何列。感谢您的帮助!
static void ReadEntries()
{
var range = $"{sheet}!A1:ET";
var request = service.Spreadsheets.Values.Get(SpreadsheetId, range);
var response = request.Execute();
var values = response.Values;
int max = 0;
int currMax;
if (values != null && values.Count>0)
{
foreach(var row in values)
{
currMax = 0;
foreach(var col in row)
{
currMax++;
}
if (max < currMax)
{
max = currMax;
}
}
}
else
{
System.Diagnostics.Debug.WriteLine("No data found.");
}
System.Diagnostics.Debug.WriteLine(max);
}
【问题讨论】:
-
如果需要,您能否将您的问题的有效 javascript 代码移植到 C# 中?
-
@Nazi A 不知道你的意思是什么——抱歉。我对javascript不是很熟悉。
-
向你致敬。您甚至提供了一个我无法立即想到的更好的答案。 +1。祝你好运。
标签: c# .net api google-sheets