添加新行并使用自标记公式填充

Posted

技术标签:

【中文标题】添加新行并使用自标记公式填充【英文标题】:Add new row and fill with self labling formula 【发布时间】:2018-04-15 16:18:07 【问题描述】:

我正在尝试使用 importrange() 对我的所有 Google 表单结果进行分组。我想在 Google 表单响应表的顶部添加一行 URL, Workbook name, Sheet name, and Date code,以便轻松复制并粘贴到主工作簿中。

我正在努力制作一个易于制作的大师作业簿,其中包含所有学生的成绩,其他教师可以轻松使用和排序数据。

我学习编码不到一个月,并整理了其他人的作品,但收到错误消息

"ReferenceError: "sheet" 没有定义。

我在第二行附上了带有工作表标签的 Google 表单结果。 https://docs.google.com/spreadsheets/d/1lW8xkSbrgDm-UG83nCnp_9p3NWvP5bnlaCpENDCgQd4/edit?usp=sharing

我目前有工作和getUrl()sheetName()、和tabName(),还有一个onOpen()addRow()。我无法将公式放入新单元格中。

var ss = SpreadsheetApp.getActive();

function onOpen() 
  var menu = [name:"Add New 2nd Row", functionName:"addRow"];
  ss.addMenu("Extra", menu);


function addRow() 
  var sh = ss.getActiveSheet(), lRow = 1; 
  var lCol = sh.getLastColumn(), range = sh.getRange(lRow,1,1,lCol);
  sh.insertRowsAfter(lRow, 1);
  var cell = sheet.getRange("A2");
  cell.setFormula("getUrl");
  var cell = sheet.getRange("B2");
  cell.setFormula("sheetName");
  var cell = sheet.getRange("C2");
  cell.setFormula("tabName");


function getUrl() 
  var SS = SpreadsheetApp.getActiveSpreadsheet();
  var ss = SS.getActiveSheet();
  var url = '';
  url += SS.getUrl();
  url += '#gid=';
  url += ss.getSheetId(); 
  return url;


function sheetName() 
  var SS = SpreadsheetApp.getActiveSpreadsheet();
  var ss = SS.getActiveSheet();
  return SpreadsheetApp.getActive().getName();


function tabName() 
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var ss = ss.getActiveRange().getSheet();
  return ss.getName();

【问题讨论】:

【参考方案1】:

公式应该以= 开头,自定义函数应该有括号,所以不是

cell.setFormula("getUrl");

以下应该写:

cell.setFormula("=getUrl()");

【讨论】:

感谢您的帮助。 'cell.setFormula()' 没有用 'cell.setValue("=sheetName()");' 使用 setValue() 传递公式不可靠(请参阅setValue to QUERY() formula doesn't work?)您认为 byd“不起作用”是什么?您收到错误消息了吗? 试过 'cell.setFormula()' 这次没有错误 感谢您的提示。 当我在第二个选项卡中尝试此代码时,我收到错误消息“范围的坐标或尺寸无效” @ChrisShortreed:这个问题包括几个功能。你说的是哪一个?错误是否显示在单元格上?

以上是关于添加新行并使用自标记公式填充的主要内容,如果未能解决你的问题,请参考以下文章

如何避免在小计范围的第一行添加新行以保护小计公式

点击按钮后在两个文本区域中添加新行并用文本填充它们

使用 form-repeater 在填充的表中添加新行需要很长时间(10-15 秒) - jQuery

Google表格:自动将公式应用于顶部添加的新行

在按钮单击时在有界 dataGridView 中添加新行

谷歌表格数组公式:新响应的重复公式