【问题标题】:Linking Data from two google sheets链接来自两个谷歌表的数据
【发布时间】:2019-10-26 15:27:50
【问题描述】:

我想链接我的谷歌表中跟踪人们假期的数据。我还有另一张纸,然后我将用它打印出来,以便人们轻松查看谁离开了。任何人都可以帮助我从一系列单元格中获取数据并只返回人名的逻辑吗?

我不能分享这些表格,因为那里绑定到我的公司,我不能在公司之外分享。我可以分享我正在尝试完成的工作的屏幕截图。任何可以使这更容易的想法都会有所帮助。我还尝试将跟踪器链接到谷歌日历,在那里我做了一个新的

CalendarChartCode Screenshots

【问题讨论】:

  • 欢迎来到 StackOverFlow,请借此机会参加 tour 并学习如何使用 How to Askminimal reproducible example
  • “我无法共享这些工作表,因为它们与我的公司绑定,我无法在公司外部共享。”是的,我明白,很多人都有同样的问题。但是共享电子表格的副本很重要,并且有一种解决方法。删除私人和机密数据并用虚拟数据替换;然后共享该电子表格的副本。
  • 你可以分享样品表,我是说样品数据表
  • 仍在努力让它发挥作用。我做了一些改进,但仍然无法获得我正在寻找的功能。

标签: google-apps-script google-sheets google-apps


【解决方案1】:

我创建了一个自定义函数,该函数根据假期输入检索每天的姓名列表。

Test Sheet

工作原理:

根据输入表,公式找到具有正确日期的列,然后在该列中查找任何 v 字符,如果找到,它将名称添加到结果中。

注意事项

日期数字是格式化为仅显示月份日期的日期对象。 月份名称显示其下方日期的月份。 (只是化妆品) 如果您不只是寻找v,而是想要寻找任何东西(hp 等),您可以将注释行更改为!=""。但是,需要进行更多的调整才能返回一个区分假期和半天的列表。

代码

function test(){
  GETVACATIONS(new Date("2019-01-02"));
}

function GETVACATIONS(date) {
  const inputSheetName = "Input";
  const namesColumns = 1;
  const dateRow = 2;
  const dateStartCol = 8;
  
  
  var spreadsheet = SpreadsheetApp.getActive();
  var inputSheet = spreadsheet.getSheetByName(inputSheetName);
  var nameSize = inputSheet.getDataRange().getLastRow()-dateRow;
  
  date = date.setHours(1,0,0,0); //reset time for uniform search
  
  var result = [];
  
  //Find cell that has the correct date.
  var lookupDateRange = inputSheet.getRange(dateRow, dateStartCol, 1, inputSheet.getMaxColumns()-dateStartCol);
  var foundIndex = lookupDateRange.getValues()[0].map(function (x) {return x.setHours(1,0,0,0);}).indexOf(date);
  if (foundIndex!=-1) {
    //match found
    var lookupColumn = dateStartCol+foundIndex;
    var lookupDataRange = inputSheet.getRange(dateRow+1, lookupColumn, nameSize);
    //Collect rows that have data, fetch the usernames on that row.
    for (var r=0; r<lookupDataRange.getValues().length; r++) {
      if (lookupDataRange.getValues()[r][0]==="v") {//Has vacation. Might change to if !="" if you want to register any non empty
        result.push(inputSheet.getRange(dateRow+1+r, namesColumns).getValue());
      }
    }
  }
  return result.sort().toString();
}

用法

将公式=GETVACATIONS(date) 添加到单元格中,其中日期是Date 对象或对单元格的引用。

希望这会有所帮助!

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-28
  • 2022-10-15
  • 2014-04-19
  • 1970-01-01
  • 2013-04-20
  • 1970-01-01
相关资源
最近更新 更多