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); }
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); }