如何解决使用电子表格的工作表名称填充行 修改点:修改后的脚本:参考:
我有一个电子表格,其中包含带有一些食谱的多张工作表。我手动将工作表的标题存储在第一张工作表中,以引用另一个电子表格中的食谱标题,但这不能很好地扩展,所以我想自动化这个过程。我相信我无法使用任何内置函数来做到这一点,所以我正在尝试构建一个自定义函数来做到这一点。
我已经知道一些编码,但我对谷歌 API 的经验非常有限。我当前的尝试返回以下异常:“您无权调用设置值”。在谷歌这个错误之后,我发现自定义函数似乎无法为其他单元格设置值,所以我在这里寻找这种微不足道的行为的替代方法。
这是我当前的代码:
function updateSheetTitles() {
var sheets = SpreadsheetApp.getActiveSpreadsheet().getSheets();
var cell = SpreadsheetApp.getActiveSpreadsheet().getCurrentCell();
var row = cell.getRow();
var column = cell.getColumn();
for (var i=0 ; i<sheets.length ; i++){
if(i<1) //For passing trought the first sheet
return;
cell.setValue(sheets[i].getSheetName);
var range = SpreadsheetApp.getActiveSheet().getRange(row+1,column,1,1);
cell = SpreadsheetApp.getActiveSheet().setCurrentCell(range);
}
}
这里有一张图片来说明我想要什么:
这可能是一项简单的任务,但我没有找到构建它的方法,因此我们将不胜感激。
解决方法
我相信你的目标如下。
- 您想在活动的 Google 电子表格中检索工作表名称。
- 您想将工作表名称放在活动单元格中。
- 您想使用自定义函数实现此目的。
修改点:
- 遗憾的是,
setValue
不能在自定义函数中使用。我认为您的问题是由这个原因引起的。 - 在您的脚本中,
cell.setValue(sheets[i].getSheetName);
处未运行getSheetName
的方法。如果您想使用这种方法,请像()
一样添加getSheetName()
。 -
SpreadsheetApp.getActiveSpreadsheet()
可以声明一次。
为了实现您的目标,我想提出一个自定义函数来创建一个包含工作表名称的数组并返回该数组。
当以上几点反映到示例脚本中时,它变成如下。
修改后的脚本:
请将以下脚本复制并粘贴到 Google 电子表格的脚本编辑器中。并且,请将 =updateSheetTitles()
的自定义函数放到一个单元格中。这样,工作表名称将返回到行方向。
function updateSheetTitles() {
return SpreadsheetApp.getActiveSpreadsheet().getSheets().map(e => [e.getSheetName()]);
}
-
根据您的回复,当您想检索除第一张和第二张以外的工作表名称时,您也可以使用以下脚本。
function updateSheetTitles() { return SpreadsheetApp.getActiveSpreadsheet().getSheets().map(e => [e.getSheetName()]).slice(2); }
参考:
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。