Google sheets 如何从GoogleSheets构建自定义报告
我在谷歌上找到了一种从数据电子表格生成报告的方法,而谷歌数据工作室和谷歌表格似乎是实现这一目标的一种选择 尽管我在LibreOffice Calc方面有一些经验,但我在Google Sheets和DataStudio方面还是新手 我在Google Sheets中的数据是: 我想要构建的报告,当新数据到达谷歌表单时(比如说,每天左右),它必须更新 我只是给字段名上色(objId;objDesc;objMore;objProgress;taskId;taskDesc;taskMore;event)并将数据排序到电子表格中,以便于理解我想要实现的目标 感谢您的帮助。解决方案 因此,基本上,只要单击一个按钮,您就需要按照所描述的顺序生成对象、任务和事件的层次结构的报告 在这个解决方案中,我提供了最复杂部分所需的代码,然后是其余步骤的指导Google sheets 如何从GoogleSheets构建自定义报告,google-sheets,google-data-studio,Google Sheets,Google Data Studio,我在谷歌上找到了一种从数据电子表格生成报告的方法,而谷歌数据工作室和谷歌表格似乎是实现这一目标的一种选择 尽管我在LibreOffice Calc方面有一些经验,但我在Google Sheets和DataStudio方面还是新手 我在Google Sheets中的数据是: 我想要构建的报告,当新数据到达谷歌表单时(比如说,每天左右),它必须更新 我只是给字段名上色(objId;objDesc;objMore;objProgress;taskId;taskDesc;taskMore;event
[{ObjectId=1.0, 1={TaskId=S02, Events=[[3242.0]], TaskMore=ppp, Description=ppp}, 0={TaskId=S01, Description=qqq, Events=[[1.0], [23.0], [324.0]], TaskMore=qqq}, ObjectMore=aaaa, ObjectDesc=aaaa, 2={TaskMore=lll, Events=[[3.0]], TaskId=S03, Description=lll}, ObjectProgress=0.7}, {3={Description=www, Events=[[43.0]], TaskMore=www, TaskId=T01}, 5={TaskId=T03, Events=[[5.0]], TaskMore=ttt, Description=ttt}, ObjectMore=bbbb, 4={Description=eee, TaskId=T02, TaskMore=eee, Events=[[54.0], [4.0]]}, ObjectDesc=bbbb, 6={Description=yyy, Events=[[345.0], [343.0]], TaskId=T04, TaskMore=yyy}, ObjectProgress=0.33, ObjectId=2.0}]
函数myFunction(){
//拿床单
var sheetData=SpreadsheetApp.getActive().getSheetByName('Sheet1');
var sheetHelp=SpreadsheetApp.getActive().getSheetByName('Sheet2');
//这是我们存储信息的阵列
变量对象=[]
//从帮助表中获取检测该列中的更改的值范围
var ObjectIds=sheetHelp.getRange(2,1,sheetHelp.getLastRow(),1).getValues().flat();
var TaskIds=sheetHelp.getRange(2,2,sheetHelp.getLastRow(),2).getValues().flat();
//删除FLAT数组中的所有空白元素
ObjectIds=ObjectIds.filter(item=>item);
TaskIds=TaskIds.filter(item=>item);
//删除最后一项,因为这只是值和空白单元格之间的更改
ObjectIds.pop();
TaskIds.pop();
//让我们遍历检测到的所有主要对象
对于(i=0;ii如果您将其视为关系表,您会发现有三个表及其字段:Object objId;objDesc;objMore;objProgress.Task taskId;taskDesc;taskMore.Event objId;taskId;Event.Hi!您只想使用DataStudio还是只想使用DataStudio创建报告?因为您可以使用电子表格和应用程序脚本创建报表,而无需Data Studio。您是否愿意使用其中任何一种解决方案?此外,您希望在每次收到新数据时创建报表,对吗?您希望这些报表以PDF格式下载还是通过Gmail发送?您好,Mateo,是的,我愿意使用解决方案使用谷歌电子表格和应用程序脚本。是的,每次电子表格中包含新行时,报告都会更新,或者我单击按钮更新报告。我期待您的指导。感谢您的回复。嗨,Mateo,非常有趣的解决方案。我将尽快阅读、运行和反馈。谢谢您的帮助。嗨,Mateo,我收到了卡在你解释的第5步。我想知道第5步的第二个选项,我的意思是:“生成一个新的工作表,并用图片中显示的结构粘贴此数据…”我已经尝试过(var sheetReport=SpreadsheetApp.getActive().getSheetByName('my_new_sheet_name');)在应用程序脚本,但我迷路了…嗨,我相应地编辑了我的答案,以指导您如何使用这些数据以正确的顺序打印在新的表格中。希望这有帮助:DHi Mateo,它确实有很大帮助。谢谢。
=iferror(ArrayFormula(lookup(unique(Sheet1!E2:E),Sheet1!E2:E,row(Sheet1!E2:E)+1)))
[{ObjectId=1.0, 1={TaskId=S02, Events=[[3242.0]], TaskMore=ppp, Description=ppp}, 0={TaskId=S01, Description=qqq, Events=[[1.0], [23.0], [324.0]], TaskMore=qqq}, ObjectMore=aaaa, ObjectDesc=aaaa, 2={TaskMore=lll, Events=[[3.0]], TaskId=S03, Description=lll}, ObjectProgress=0.7}, {3={Description=www, Events=[[43.0]], TaskMore=www, TaskId=T01}, 5={TaskId=T03, Events=[[5.0]], TaskMore=ttt, Description=ttt}, ObjectMore=bbbb, 4={Description=eee, TaskId=T02, TaskMore=eee, Events=[[54.0], [4.0]]}, ObjectDesc=bbbb, 6={Description=yyy, Events=[[345.0], [343.0]], TaskId=T04, TaskMore=yyy}, ObjectProgress=0.33, ObjectId=2.0}]