Google Apps脚本:动态单元格位置;无权调用setValues

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Google Apps脚本:动态单元格位置;无权调用setValues相关的知识,希望对你有一定的参考价值。

所以我有一张通过IFTTT跟踪我的工作时间的工作表,我想在我的工作表中添加一个脚本,以便在我工作周结束时可以调用它,它将会显示“结束工作周!”所有在不同的列但在同一行.....然而为了IFTTT代码工作我需要在下面有一个空行,所以我一直在放'=“”'。这是自定义功能:

function myRows(w, x, y, z) 
{
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getActiveSheet();
  //Logger.log(x);
  //Logger.log(y);
  var range = sheet.getRange(w, x, y - w + 1, z - x + 1);
  var rangeSetUp = [["Begin", "Work", "Week", "!"], ["=F1",  " ", " ", " "]];
  range = range.getA1Notation(); //Say the range is 1,1,2,4 then this will return a string "A1:D2", which seems to work better on getRange...
  range = sheet.getRange(range);
  range.setValues(rangeSetUp);
}

在单元格中我会有=myRows(ROW(), COLUMN(), (ROW() + 1), (COLUMN() + 3))而且我不发送静态值,因为代码将放入不同的单元格......值的“数组”应始终为4列宽2行深....放置它的问题,这就是为什么var rangeSetUp是静态的。我可以让代码完全执行到setValues然后我得到“#ERROR!你没有权限调用setValues(第11行)。”欢迎任何帮助:)谢谢!我是表单的所有者。

答案

自定义函数cannot use .setValues()。从文档引用:

自定义函数不会影响除返回值之外的单元格。换句话说,自定义函数不能编辑任意单元格,只能编辑它所调用的单元格及其相邻单元格。要编辑任意单元格,请使用自定义菜单来运行函数。

要将值写入邻接单元格,只需返回一个值数组,它将自动填充相邻值。有关详细信息,请参阅documentation

在您的具体情况下,您需要做的是以下内容:

function myRows() 
{
  var rangeSetUp = [["Begin", "Work", "Week", "!"], ["=F1",  " ", " ", " "]];
  return rangeSetUp
}

因此,如果您的单元格A3是'= myRows()',那么您的输出就是这样 enter image description here

以上是关于Google Apps脚本:动态单元格位置;无权调用setValues的主要内容,如果未能解决你的问题,请参考以下文章

使用 AppS 脚本返回 Google 表格单元格的绝对值

Apps 脚本 - 在 Google 表格上复制“将图像放入选定的单元格”

如何修复本地时间的 Google Apps 脚本并自动清除单元格

如何获取显示#ERROR的单元格的后端值!使用 Google Apps 脚本?

直接在 Apps 脚本中按单元格颜色对 google-sheet 值进行排序

如何使用 Google Apps 脚本在电子表格中查找按钮的位置?