Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.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 如何根据当前单元格将相邻单元格的值附加到列表中';s值多少?_Google Apps Script_Google Sheets - Fatal编程技术网

Google apps script 如何根据当前单元格将相邻单元格的值附加到列表中';s值多少?

Google apps script 如何根据当前单元格将相邻单元格的值附加到列表中';s值多少?,google-apps-script,google-sheets,Google Apps Script,Google Sheets,让我们假设colA包含员工的姓名。ColB包含一个值“clocked in”,如果它们不工作,则包含一个空值“”。 如何通过colB循环查找空单元格,然后将colA中相应的名称附加到列表(或数组)中? 最后,我想返回此列表并在屏幕上显示(或将其提供给其他脚本) 这是一个示例描述,但脚本将在我的实际数据中处理相同的前提 我的第一次尝试导致了这件小事(至少,这是一个想法,但它不起作用,仍然是这方面的新手): 函数getAbsEmployees(){ var缺席=[]; var sheet=Spre

让我们假设colA包含员工的姓名。ColB包含一个值“clocked in”,如果它们不工作,则包含一个空值“”。 如何通过colB循环查找空单元格,然后将colA中相应的名称附加到列表(或数组)中? 最后,我想返回此列表并在屏幕上显示(或将其提供给其他脚本)
这是一个示例描述,但脚本将在我的实际数据中处理相同的前提

我的第一次尝试导致了这件小事(至少,这是一个想法,但它不起作用,仍然是这方面的新手):

函数getAbsEmployees(){ var缺席=[]; var sheet=SpreadsheetApp.getActiveSpreadsheet().getSheetByName('clocking in'); var status=sheet.getRange(112,2,10,1).getValues();//colB Logger.log(status)//到目前为止没有问题 对于(变量i=0;i}作为自定义函数,将this=getAbsEmployees()放在员工姓名范围之外的任何单元格中

自定义函数如下所示

function getAbsEmployees() {

  var absent = [];
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('clocking in');
  var names = sheet.getRange(1,1,12,2).getValues();

  for (var i = 0; i < names.length; i++) {
    if( names[i][1] === "" ) absent.push(names[i][0]);
  }

  return( absent );
}
函数getAbsEmployees(){ var缺席=[]; var sheet=SpreadsheetApp.getActiveSpreadsheet().getSheetByName('clocking in'); var name=sheet.getRange(1,1,12,2).getValues(); 对于(var i=0;i您需要知道您的代码在做什么。了解代码正在做什么的方法是使用
Logger.log()
。range类没有
length
属性:您使用的是
r1.length
,它不起作用。因此,您可以记录
Logger.log('r1.length:'+r1.length)
,然后从代码编辑器中选择View、Logs和查看结果的打印输出。你会看到结果的。请阅读@Norbert Sandy Good给你的好建议,Norbert。使用
Logger.log()。而且它不是一个新手工具。我已经编写了一段时间了,但是我发现我在某个阶段使用我的Logger,几乎每次我必须构建一些代码时都会使用它从未被执行。@tehhowch你是对的。我写这封信的时候可能是睡着了。你是一个优秀的运动员我真的不明白为什么我应该使用它作为一个自定义函数,并把它放入一个单元格(抛出和'未知'错误),当我想要的是收集的名称,并发送到另一个脚本作为一个列表(或只是打印它)。另一个问题是for循环甚至没有执行。通过将Log.logger放在不同的位置,我可以识别“name”的正确值,但不能将值推送到其他位置。更重要的是,它甚至不会在最后打印“缺席”的空列表。你还有什么要帮我的吗?@Norbert,你可以随意处理退货清单。我只想说明,如果将其用作自定义函数,它将在公式下方的电子表格单元格中显示列表。我测试了它,它对我有效。@Norbert,你能用你的最新版本替换上面的原始代码吗?@Norbert,我不确定哪列是什么,但我认为上次的名字在A列,在B列没有。现在你只得到B列。getRange(112,2,10,1)从第112行B列到第121行只有1列开始,因此名称[i][1]未定义而不是“”。名称[i][0]是B列中的名称。@Norbert,对,您只需更改为getRange(112,1,10,2)。获取A列和B列。当获取值时,将得到一个二维数组。在您的例子中,10行2列A和B。每行是第一个索引,每列是第二个索引。数组基于0,因此状态[0][0]是第一行、第一列或名称1。状态[0][1]是第一行、第二列或缺勤1。