1

所以我有一张通过 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然后我得到

#错误!您无权调用 setValues(第 11 行)。

欢迎任何帮助。我是工作表的所有者 是的。

4

1 回答 1

1

自定义函数不能使用 .setValues(). 从文档中引用:

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

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

在您的具体情况下,您需要做的就是以下几点:

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

因此,如果您的单元格 A3 是 '=myRows()' 您的输出会这样
在此处输入图像描述

于 2018-03-06T05:51:06.103 回答