当前位置: 首页 > 知识库问答 >
问题:

Zapier从Tsheets数据在Google Sheet中创建多行

谢建业
2023-03-14

在一个Zapier Zap中,我使用一个对Tsheets的an API GET调用来获取时间表列表。我想将每个时间表拆分为行项目,就像Xero发票中的行项目一样,因为我想将每个时间表中的项目数据保存到Google表中自己的行中。(理想情况下,我希望将行数据直接保存到MySQL数据库中,但我发现Zapier目前只支持Google sheets一次保存多行。)然而,我没有快乐。我怀疑两个问题之一:

    null

编辑:我从API返回的数据如下所示:

{
 "results": {
  "timesheets": {
   "11515534": {
    "id": 11515534,
    "user_id": 1260679,
    "jobcode_id": 11974818,
    "start": "2018-07-13T14:58:00+10:00",
    "end": "2018-07-13T14:58:00+10:00",
    "duration": 0,
    "date": "2018-07-13",
    "tz": 10,
    "tz_str": "Australia\/Brisbane",
    "type": "regular",
    "location": "(Brisbane, Queensland, AU?)",
    "on_the_clock": false,
    "locked": 0,
    "notes": "",
    "customfields": {
     "118516": "",
     "121680": "",
     "118530": "",
     "118518": "Field supplies, materials"
    },
    "last_modified": "2018-07-13T04:59:27+00:00",
    "attached_files": [

    ]
   },
   "11515652": {
    "id": 11515652,
    "user_id": 1260679,
    "jobcode_id": 11974830,
    "start": "2018-07-13T14:59:00+10:00",
    "end": "2018-07-13T14:59:00+10:00",
    "duration": 0,
    "date": "2018-07-13",
    "tz": 10,
    "tz_str": "Australia\/Brisbane",
    "type": "regular",
    "location": "(Brisbane, Queensland, AU?)",
    "on_the_clock": false,
    "locked": 0,
    "notes": "",
    "customfields": {
     "118516": "",
     "121680": "",
     "118530": ""
    },
    "last_modified": "2018-07-13T05:00:30+00:00",
    "attached_files": [

    ]
   },
   "39799840": {
    "id": 39799840,
    "user_id": 1260679,
    "jobcode_id": 19280104,
    "start": "2018-10-24T11:45:00+11:00",
    "end": "2018-10-24T12:00:00+11:00",
    "duration": 900,
    "date": "2018-10-24",
    "tz": 11,
    "tz_str": "Australia\/Brisbane",
    "type": "regular",
    "location": "(Sydney, New South Wales, AU?)",
    "on_the_clock": false,
    "locked": 0,
    "notes": "",
    "customfields": {
     "118516": "",
     "121680": "FP - Field plant Installation",
     "118530": "Site cleanup"
    },
    "last_modified": "2018-10-24T05:56:27+00:00",
    "attached_files": [

    ]
   },
   "39801850": {
    "id": 39801850,
    "user_id": 1260679,
    "jobcode_id": 19280204,
    "start": "2018-10-24T12:00:00+11:00",
    "end": "2018-10-24T13:45:00+11:00",
    "duration": 6300,
    "date": "2018-10-24",
    "tz": 11,
    "tz_str": "Australia\/Brisbane",
    "type": "regular",
    "location": "(Sydney, New South Wales, AU?)",
    "on_the_clock": false,
    "locked": 0,
    "notes": "",
    "customfields": {
     "118516": "",
     "121680": "OP - Plant, Vehicles",
     "118530": "Load\/Unload"
    },
    "last_modified": "2018-10-24T05:57:04+00:00",
    "attached_files": [

    ]
   },
   "40192757": {
    "id": 40192757,
    "user_id": 1260679,
    "jobcode_id": 19280110,
    "start": "2018-10-25T08:00:00+11:00",
    "end": "2018-10-25T10:00:00+11:00",
    "duration": 7200,
    "date": "2018-10-25",
    "tz": 11,
    "tz_str": "Australia\/Brisbane",
    "type": "regular",
    "location": "TSheets Android App",
    "on_the_clock": false,
    "locked": 0,
    "notes": "From my mobile",
    "customfields": {
     "118516": "",
     "121680": "FW - Plant Assembly",
     "118530": "Panels"
    },
    "last_modified": "2018-10-24T23:02:56+00:00",
    "attached_files": [

    ]
   },
   "40193033": {
    "id": 40193033,
    "user_id": 1260679,
    "jobcode_id": 19280108,
    "start": "2018-10-25T10:00:00+11:00",
    "end": "2018-10-25T10:00:00+11:00",
    "duration": 0,
    "date": "2018-10-25",
    "tz": 11,
    "tz_str": "Australia\/Brisbane",
    "type": "regular",
    "location": "TSheets Android App",
    "on_the_clock": false,
    "locked": 0,
    "notes": "",
    "customfields": {
     "118516": "",
     "121680": "FW - Plant Assembly",
     "118530": "Panels"
    },
    "last_modified": "2018-10-24T23:06:05+00:00",
    "attached_files": [

    ]
   }
  }
 },
 "more": false
}

这是我的Python代码:https://imgur.com/a/8w1x1em

共有1个答案

鞠鸿雪
2023-03-14

好吧,我想我已经为你想好了。您提供的zapier-catch hook-json array-loop over each item in Array的示例肯定是正确的,但是,由于它依赖于webhooks,除非您能够发布发票应用程序中的数据,否则它可能不会对您起作用。

注意:我用Python编写代码,所以我的示例将用Python编写,也就是说,这些示例几乎不知道代码,也可以用Javascript复制。我设置了一个虚拟Zap来复制当前发生的Zap

# results = requests.get(url, headers=header)
# results = results.json()
# Dummy result data converted to JSON object after API GET request:
results =  { 
    "results" : {
        "timesheets" : {
            "timesheet_id_1" : {
                "data_1" : "data",
                "data_2" : "data",
                "data_3" : "data"
                },
            "timesheet_id_2" : {
                "data_1" : "data",
                "data_2" : "data",
                "data_3" : "data"
                },
            "timesheet_id_3" : {
                "data_1" : "data",
                "data_2" : "data",
                "data_3" : "data"
                }
            }
        }
    }

return results

这里再读一点,为了让Zapier映射行项,它需要接收数组中的数据。上面的输出是一个dictionary对象,Zapier确实将这个dictionary中的值映射到以后可以访问的数据,但是它映射了整个dictionary,这就是为什么您看到的输出是多个字段,并且是在我的输出中复制的原因。您要做的是映射字典的子集,并将每个子集作为单独的输出提供。

您想要做的是循环遍历results dictionary对象的内部字段,并在嵌套的“timesheet_id_n”上执行zaps。为此,我们必须返回一个行项列表,如上所述,行项必须被放入一个数组中。因此我的实现代码如下所示:

# results = requests.get(url, headers=header)
# results = results.json()
# Dummy result data converted to JSON object after API GET request:
results =  { 
    "results" : {
        "timesheets" : {
            "timesheet_id_1" : {
                "data_1" : "data",
                "data_2" : "data",
                "data_3" : "data"
                },
            "timesheet_id_2" : {
                "data_1" : "data",
                "data_2" : "data",
                "data_3" : "data"
                },
            "timesheet_id_3" : {
                "data_1" : "data",
                "data_2" : "data",
                "data_3" : "data"
                }
            }
        }
    }

# Container for my line items. Each element in this list will be executed on separately
return_results = []

results = results.get("results")
results = results.get("timesheets")
for item in results:
    return_results.append({"sheet_id" : item, "sheet_data" : results.get(item)})

return return_results

return_results的输出将是dictionary对象的数组。由于这些字典对象在数组中,Zapier将把它们作为行项处理,另外,由于每个行项都是字典对象,Zapier将自动映射每个值,以便它们可以独立地在后面的操作步骤中使用。您可以在下面的截图中看到我的触发器zap的输出中演示了这一点:

输出1
输出2
输出3

希望这有帮助!

 类似资料:
  • 我正在使用谷歌工作表。我有两张名为App Catgeory和目录类别。 应用类别有两列:-1.类别名称2.是可选择的 在目录类别中,我有一个类别选择下拉列表,它是从应用程序类别表的类别名称列创建的。“类别名称”列中的所有值在下拉列表中可用。下拉列表由以下数据验证公式创建:- 但是,我想要这样的类别名称在下拉列表中有是可选择的列值是在应用类别。如果是可选择的列值为否,则不需要在下拉列表中显示此类类别

  • 我正在创建一个电子商务网站,该网站的产品具有多个属性(大小、颜色等)因此,每个属性也有许多值(对于大小,这些值是:small、medium、large等) 我有一个ID数组来表示属性,如下所示: 然后我想查询我的数据库中的每个id以获取该属性的值并创建结果的多维数组,如下所示: 到目前为止,我得到的是: 我最终想要实现的是获得产品的所有属性组合(小红色条纹、小绿色条纹、小蓝色条纹等)

  • 问题内容: 您能帮忙解决这个问题吗? 我正在尝试创建然后使用一个名为TIGER的数据库。 如果我在MySQL中创建数据库并且运行完美,我没有问题。 我想做的是从Java创建它。这样,当首次运行代码时,它将在初始启动过程中创建数据库。如果可能的话,我想用一种干净的方法将其装箱。 有人可以告诉我您实际将代码放置在哪里 这是代码 这是创建数据库的代码 在此先感谢,感谢您的帮助。 因为我是一个长期读者但还

  • 我创建了一个json文件使用python这是一个列表。每个子列表都有chart.js图表的数据,即对于x和y轴,具有和。 这是包含列表和子列表的json。 下面的代码创建了一个图表,但我希望遍历所有条目,并为每个子列表(图表的多个实例)创建图表。 如何循环遍历下面代码中列出的json文件并创建多个chart.js图表?i、 e.,等的图表。

  • 本文向大家介绍JavaScript从JSON数据创建数组?,包括了JavaScript从JSON数据创建数组?的使用技巧和注意事项,需要的朋友参考一下 要根据JSON数据创建数组,请使用from JavaScript的概念。假设以下是我们的数据- 以下是根据上述数据创建数组的代码- 示例 要运行上述程序,您需要使用以下命令- 在这里,我的文件名为demo82.js。 输出结果 这将产生以下输出-

  • 问题内容: 是否可以从Java创建MySQL数据库? 我只看过这样的连接URL示例,其中在URL中指定了数据库名称: 当我只有登录名和密码时,如何创建MySQL数据库? 问题答案: jdbc连接中不需要数据库,因此您可以执行以下建议的操作:http://forums.mysql.com/read.php?39,99321,102211#msg-102211和http://marc.info /?l