Exemplo n.º 1
0
        private string ParseResponseAsRawCsvString(GoogleSpreadSheetResponse response)
        {
            string rawCsvString = null;

            try
            {
                var header = response.Values[0];

                foreach (var row in response.Values)
                {
                    var validateRow = new List <string>();

                    // データが不足しているので足りない分は空データをいれておく
                    if (row.Count < header.Count)
                    {
                        while (row.Count != header.Count)
                        {
                            row.Add(string.Empty);
                        }
                    }

                    foreach (var column in row)
                    {
                        var validateColumn = column;

                        // csv で複数行を扱うセルに関して、""で囲われた範囲が1セルになる。
                        // 更に、" が文字列として含まれている場合は"" とすることでエスケープされる。
                        if (column.Contains("\n"))
                        {
                            validateColumn = column.Replace("\"", "\"\"");
                            validateColumn = $"\"{validateColumn}\"";
                        }

                        validateRow.Add(validateColumn);
                    }

                    var rowString = string.Join(",", validateRow) + "\n";
                    rawCsvString += rowString;
                }
            }
            catch (Exception e)
            {
                Debug.LogError($"{e}:{e.Message}");
            }

            return(rawCsvString);
        }
Exemplo n.º 2
0
        private ICsvData ParseResponseAsCsvData(GoogleSpreadSheetResponse response)
        {
            var csvData = new CsvData();

            // NOTE: 先頭行・列はKey として取り扱う
            try
            {
                var header = response.Values[0];
                header.RemoveAt(0);
                response.Values.RemoveAt(0);

                foreach (var row in response.Values)
                {
                    var rowKey = row[0];
                    row.RemoveAt(0);

                    var rowData = new Dictionary <string, string>();
                    csvData.Data.Add(rowKey, rowData);

                    // データが不足しているので足りない分は空データをいれておく
                    if (row.Count < header.Count)
                    {
                        while (row.Count != header.Count)
                        {
                            row.Add(string.Empty);
                        }
                    }

                    for (var i = 0; i < header.Count; i++)
                    {
                        var value = row[i];

                        rowData.Add(header[i], value);
                    }
                }
            }
            catch (Exception e)
            {
                Debug.LogError($"{e}:{e.Message}");
            }

            return(csvData);
        }