我正在尝试从多个工作表中找到一个员工ID,并将时间戳拉到一张工作表中。
Google表格中有多张表格。每个工作日都有单独的工作表:
每张考勤表都有两列。为了了解员工登录的所有时间,我想将所有工作表中所有出现的员工ID以及时间戳记汇总到合并表:。
我在Excel中做了类似的事情,猜测可以使用Google Apps脚本在Google表格中完成。
如果有人可以引导我使用Google图表中的内置或自定义功能,那将会很有帮助。
答案 0 :(得分:1)
我会帮助你提供一个基本的大纲,一些建议和一些资源来帮助你,但是不要指望我写下整篇文章。
第1步 - 创建自定义菜单选项
您希望能够从电子表格中访问您的脚本。您可以通过创建自定义菜单选项来完成此操作。这是article by google on custom menus。
虽然谷歌使用简单的触发器onOpen
,但我发现installable triggers更可靠。
第2步 - 获取用户输入
提示输入员工的身份并让脚本发挥其魔力是很好的。这是一个article by google on dialogs and sidebars,讨论如何获取脚本的用户输入。
第3步 - 从电子表格中读取和写入数据
您可以使用SpreadsheetApp
访问spreadsheeet数据。从自定义菜单调用脚本时,您可以使用SpreadsheetApp.getActiveSpreadsheet
;但是,如果您想在脚本编辑器中测试代码,则没有"活动电子表格",请改用SpreadsheetApp.openById
。
通过访问电子表格,您可以致电:
spreadsheet.getSheetByName("name").getRange(1, 1, 2, 2).getValues();
spreadsheet.getSheetByName("name").getRange(1, 1, 2, 2).setValues([[1, 2], [3, 4]]);
请注意,getValues
和setValues
适用于二维数组
警告 - 像往常一样,I / O会花费大量处理时间,因此请避免多余调用getRange().XetValues
,此google article about appscript best practices会更详细。此外,如果您有很多考勤表,那么您可能需要考虑将它们合并为一个。
第4步 - 获取相应的工作表
您需要在某种程度上区分电子表格中的哪些工作表是考勤表:
function isAttendanceSheet(sheet) {
return /Magical regex/.test(sheet.getName);
}
var sheets = spreadsheet.getSheets().filter(isAttendanceSheet);
想出适合你的魔法正则表达式,这将过滤它们。
希望这会有所帮助并祝你好运!