Google Drive API v3-在工作表中导入CSV-是否可以禁用智能转换?

时间:2019-01-07 10:10:20

标签: csv google-drive-api

借助API,我们可以创建一个空的Sheet文件,然后将其填充为CSV数据。 在我的CSV数据中,字符串用双引号(“)引起来。 在这些数据中,有条形码,例如“ 0212345678901”。 在工作表文件中,字符串0212345678901的数字已转换,因此前0消失了……这是不正确的。 在CSV文件中,如果字符串用双引号引起来,则应保留字符串……

我的数据分两步导入:

  1. 我使用API​​创建一个新的空工作表文件。 API返回创建的文件ID。

    1. POST => mar()
    2. body:

      boxplot(
        as.numeric(UEC$Q1_1)[3:21],
        as.numeric(UEC$Q1_2)[3:21],
        as.numeric(UEC$Q1_3)[3:21],
        as.numeric(UEC$Q1_4)[3:21],
        as.numeric(UEC$Q1_5)[3:21],
        as.numeric(UEC$Q1_6)[3:21],
        as.numeric(UEC$Q1_7)[3:21],
        as.numeric(UEC$Q1_8)[3:21],
        as.numeric(UEC$Q1_9)[3:21],
        as.numeric(UEC$Q1_10)[3:21],
        as.numeric(UEC$Q1_11)[3:21],
        as.numeric(UEC$Q1_12)[3:21],
        as.numeric(UEC$Q1_13)[3:21],
        as.numeric(UEC$Q1_14)[3:21],
        as.numeric(UEC$Q1_15)[3:21],
        as.numeric(UEC$Q1_16)[3:21],
        as.numeric(UEC$Q1_17)[3:21],
        as.numeric(UEC$Q1_18)[3:21],
        as.numeric(UEC$Q1_19)[3:21],
        as.numeric(UEC$Q1_20)[3:21],
        as.numeric(UEC$Q1_21)[3:21],
        as.numeric(UEC$Q1_22)[3:21],
        as.numeric(UEC$Q1_23)[3:21],
        as.numeric(UEC$Q1_24)[3:21],
        as.numeric(UEC$Q1_25)[3:21],
        as.numeric(UEC$Q1_26)[3:21],
        main="UEC Questions",
        names=c("annoying/enjoyable", "not understandable/understandable",    "creative/dull",    "easy to learn/difficult to learn", "valuable/inferior",    "boring/exciting",  "not interesting/interesting",  "unpredictable/predictable",    "fast/slow",    "inventive/conventional",   "obstructive/supportive", "good/bad",   "complicated/easy", "unlikable/pleasing",   "usual/leading edge",   "unpleasant/pleasant",  "secure/not secure",    "motivating/demotivating",  "meets expectations/does not meet expectations",    "inefficient/efficient",    "clear/confusing",  "impractical/practical",    "organized/cluttered",  "attractive/unattractive",  "friendly/unfriendly", "conservative/innovative"),
        las=2,
        mar=c(5.1, 4.1, 4.1, 2.1) 
        )
      
  2. 我使用先前返回的ID更新文件(通过PATCH REST调用)。内容是我的CSV数据。

    1. PATCH => https://www.googleapis.com/drive/v3/files
    2. 标题:授权+“内容类型”:“ text / csv”

所以,我有两个问题: 1:可以禁用智能转换吗? 2:或者,是否有一种方法可以指定字符串必须保留为字符串(例如在Excel中,如果我们以简单的引号'开头的公式)?

样品:

{
  'name': 'aFilename',
  'mimeType': 'application/vnd.google-apps.spreadsheet',
  'parents': [idFolder]
}

1 个答案:

答案 0 :(得分:1)

这些修改如何?您遇到的情况有3种模式。我认为有几个答案。因此,请将此视为其中之一。

1。添加撇号

在此模式中,通过在CSV数据中添加撇号,可以将其用作字符串值。请在CSV数据中添加撇号,并使用修改后的CSV文件更新电子表格。我认为这是这三种模式中最简单的。

"21/12/2018 17:04:28","'0212345005507",1

"21/12/2018 17:04:28",'0212345005507,1

2。在Sheets API中使用sheets.values.update方法

在这种模式下,Sheets API中的sheets.values.update方法用于创建的电子表格。

终点:
PUT https://sheets.googleapis.com/v4/spreadsheets/### spreadsheetId ###/values/### sheetName ###?valueInputOption=RAW
要求正文:
{
 "values": [
  [
   "21/12/2018 17:02:06",
   "0212345005507",
   "1"
  ]
 ]
}

3。使用Sheets API中的电子表格方法创建

在此模式下,将使用Sheets API中的电子表格.create方法。在这种情况下,可以通过一个API调用来创建电子表格和放置值。

终点:
POST https://sheets.googleapis.com/v4/spreadsheets
要求正文:
{
 "sheets": [
  {
   "data": [
    {
     "rowData": [
      {
       "values": [
        {
         "userEnteredValue": {
          "stringValue": "21/12/2018 17:02:06"
         }
        },
        {
         "userEnteredValue": {
          "stringValue": "0212345005507"
         }
        },
        {
         "userEnteredValue": {
          "numberValue": 1
         }
        }
       ]
      }
     ]
    }
   ]
  }
 ],
 "properties": {
  "title": "### filename of spreadsheet ###"
 }
}

注意:

  • 对于模式2和3,Sheets API通过自动添加撇号来放置0212345005507的值。当您看到该单元格时,它就是'0212345005507

参考文献:

如果这些不是您想要的结果,对不起。