Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google apps script 如何使用Google应用程序脚本查找唯一的名称并将其值相加_Google Apps Script - Fatal编程技术网

Google apps script 如何使用Google应用程序脚本查找唯一的名称并将其值相加

Google apps script 如何使用Google应用程序脚本查找唯一的名称并将其值相加,google-apps-script,Google Apps Script,因此,我使用importGoogleCalendar代码将我的员工姓名和工作时间从谷歌日历拉到谷歌工作表。然而,我什么都做了。这些名称每天在多行中重复多次,并带有相应的小时数。我如何才能为每个员工获得一个唯一的姓名,以及他们每次姓名出现在另一张工作表上时的累计工时,使其看起来更干净、更易于查看 我想 名称 小时 山姆 5. 山姆 7. 上下快速移动 3. 山姆 5. 山姆 7. 上下快速移动 6. 乔 4. 我喜欢使用透视表的方法(因为它们非常适合处理此类数据)。您可以免费获得总计和其他功能 但

因此,我使用importGoogleCalendar代码将我的员工姓名和工作时间从谷歌日历拉到谷歌工作表。然而,我什么都做了。这些名称每天在多行中重复多次,并带有相应的小时数。我如何才能为每个员工获得一个唯一的姓名,以及他们每次姓名出现在另一张工作表上时的累计工时,使其看起来更干净、更易于查看

我想

名称 小时 山姆 5. 山姆 7. 上下快速移动 3. 山姆 5. 山姆 7. 上下快速移动 6. 乔 4.
我喜欢使用透视表的方法(因为它们非常适合处理此类数据)。您可以免费获得总计和其他功能

但是,如果您只想将摘要数据写入电子表格,可以使用以下方法:

我的出发点在您现有脚本的这一行:

//根据筛选器获取事件
变量事件=(搜索文本=“”)?calendar.getEvents(startDate,endDate):calendar.getEvents(startDate,endDate,{search:searchText});
从那里,我将您的
事件
数组传递给一个新函数:

函数摘要(事件){
var totalsByName=新映射();
events.forEach((事件)=>{
让name=event.getTitle();
//持续时间(以秒为单位)(从毫秒/1000开始):
让duration=Math.abs(event.getEndTime()-event.getStartTime())/1000.0;
if(totalsByName.has(name)){
//增加此人的现有持续时间:
totalsByName.set(名称,totalsByName.get(名称)+持续时间);
}否则{
//为此人添加第一个条目:
totalsByName.set(名称、持续时间);
}
} );
//迭代映射中的每个条目:
for(让totalsByName的[名称、持续时间]表示){
log(name+'='+(duration/3600.0));
}
}
该函数用于填充结果的
映射图
——每个人名一个条目

在我的示例中,我所做的就是将数据打印到控制台

console.log(name+'='+(duration/3600.0));//将秒转换为小时
但是您可以改为使用my
name
duration
值修改所有现有代码,将这些数据写入电子表格


如果愿意,您可以应用其他逻辑按名称进行排序,并将数字数据四舍五入到首选的小数位数。

“我编码了一些东西”-您可以提出问题,向我们展示相关的代码吗?在提取数据和将数据写入工作表之间,可以进行聚合——但如果不了解您是如何获取数据的,很难说。换言之,你能提供一个吗?请记得看一下,以获得更多的指导。你想要的通常称为a。看这个:嗨,谢谢你的建议,但我有一个问题。当您说在my events变量之后包含它时,您的意思是:
var events=(searchText='')?calendar.getEvents(startDate,endDate):calendar.getEvents(startDate,endDate,{search:searchText});函数summary(events){…}
因为我包含了代码,但是,我的控制台没有显示您说应该填充的任何数据。这不是我的意思,不是。我的新函数
summary(events)
需要在现有函数结束后添加到脚本中,而不是放在它里面。然后,您需要在现有函数中添加一个新行—一个调用my函数的行。这一新行只是
summary(事件)-并将其放置在
var events=…
行之后。如果不清楚的话,很抱歉——但这正是我在写“从那里我将您的
事件
数组传递给一个新函数”时想要说的。让我知道这是否有帮助。好的,这更有意义,并且正在发挥作用。非常感谢你!