首页 文章

通过Google表格API v4使用c#检查Google表格中的空单元格

提问于
浏览
0

这是代码段 . 我已成功使用C#连接到Google表格API v4 . 我发现当一个细胞是空白或空的时候 . 我收到此错误: System.ArgumentOutOfRangeException: 'Index was out of range. Must be non-negative and less than the size of the collection. Parameter name: index' 如您所见,单元格E3单元格中的输入ID为空白/空白 . 我在下面的代码中尝试了这一点来检查一旦它是空白它给出零值,但仍然给出相同的错误 . 我想要实现的是一旦一个单元格为空,我给它的值为零或未知?请记住,如果我在单元格中放置值E3代码工作正常,只需要检查空单元格 . 从这里参考https://developers.google.com/sheets/api/quickstart/dotnet#further_reading
enter image description here

int inputId = 0;
            foreach (var row in values)
            {

                SqlCommand command = new SqlCommand();
                command.Connection = ServerConnection;            // <== lacking
                command.CommandType = CommandType.Text;
                command.CommandText = "INSERT into [GoogleSheetsAPI].[dbo].[Followup Stage] ( [Timestamp], [Email Address], [Do You Want To Follow Up] ,[Is The Issue Resolved From Follow Up] ,[Input ID]) VALUES (@TimeStamp, @EmailAddress,  @DoYouWantToFollowUp,  @IsTheIssueResolvedFromFollowUp,  @InputID ) ";
                command.Parameters.AddWithValue("@TimeStamp", Convert.ToDateTime(row[0]));
                command.Parameters.AddWithValue("@EmailAddress", Convert.ToString(row[1]));
                command.Parameters.AddWithValue("@DoYouWantToFollowUp", Convert.ToString(row[2]));
                command.Parameters.AddWithValue("@IsTheIssueResolvedFromFollowUp", Convert.ToString(row[3]));
 //checking for null   or if the cell is empty  still doesn't work this way??
                if (row[4] == null || string.IsNullOrEmpty(Convert.ToString(row[4])))
                {
                    inputId = 0;
                }
                else
                {
                    inputId = Convert.ToInt32(row[4]);
                }

                command.Parameters.AddWithValue("@InputID", inputId);


                try
                {
                    // ServerConnection.Open();
                    int recordsAffected = command.ExecuteNonQuery();
                }
                catch (SqlException E)
                {
                    // error here
                    Console.Write(E.Message);
                    //   Console.ReadLine;
                }



            }

1 回答

  • 1

    我们必须要理解的一件事是Sheets API不会读取"empty cells" ,.您可以在Read a single range grouped by column中阅读:

    响应中省略了空尾随行和列 .

    它可能不是直接的,但这也是测试所说的 . 当我读取一个空单元格时,我得到了同样的错误

    Uncaught TypeError: Cannot read property 'length' of undefined
    

    一个解决方法是为“空单元格”写一个占位符,就像你用“零或未知”做的那样 .

    如果这不是一个选项,你也可以在停止程序之前执行if-else类似的方法来捕获错误 . 要实现这一点,请执行以下操作:

    例:

    for (i = 0; i < range.values.length; i++) {
            //IF NOT AN EMPTY CELL
            if(range.values[i][j]){
    
               console.log(range.values[i][i] + " is my value");
             //IF IT's AN EMPTY CELL
             }else{
    
                console.log("U N D E F I N E D");
                //your method to write to that cell
                writeToSheet();
             }         
      }
    

    希望这个简单的类比可以帮助你 .

相关问题