从多张Google表格中获取值

时间:2016-07-29 21:00:37

标签: google-apps-script google-sheets

我正在尝试从多个工作表中找到一个员工ID,并将时间戳拉到一张工作表中。

Google表格中有多张表格。每个工作日都有单独的工作表:Daily sheets

每张考勤表都有两列。为了了解员工登录的所有时间,我想将所有工作表中所有出现的员工ID以及时间戳记汇总到合并表:Consolidation sheet

我在Excel中做了类似的事情,猜测可以使用Google Apps脚本在Google表格中完成。

如果有人可以引导我使用Google图表中的内置或自定义功能,那将会很有帮助。

1 个答案:

答案 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]]);

请注意,getValuessetValues适用于二维数组

警告 - 像往常一样,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);

想出适合你的魔法正则表达式,这将过滤它们。

希望这会有所帮助并祝你好运!