Javascript 让计数器在谷歌工作表中工作的问题
我试图在Google sheets中创建一个按钮,当按下该按钮时,将一张表格从单独的电子表格导入到当前的电子表格中,并给它一个名称“Miscellaneous”,后跟数字1到无穷大 例如,第一次按下按钮时,它将导入一张工作表并称之为“杂项1”,第二次按下按钮时,它将导入第二张工作表并称之为“杂项2”,依此类推 我有导入工作,现在我正试图使用一个计数器来增加“Miscellaneous”后面的数字。有人能告诉我我做错了什么吗?错误发生在第22行 template.copyTo(currentSpreadsheet).setName(newName)Javascript 让计数器在谷歌工作表中工作的问题,javascript,google-sheets,Javascript,Google Sheets,我试图在Google sheets中创建一个按钮,当按下该按钮时,将一张表格从单独的电子表格导入到当前的电子表格中,并给它一个名称“Miscellaneous”,后跟数字1到无穷大 例如,第一次按下按钮时,它将导入一张工作表并称之为“杂项1”,第二次按下按钮时,它将导入第二张工作表并称之为“杂项2”,依此类推 我有导入工作,现在我正试图使用一个计数器来增加“Miscellaneous”后面的数字。有人能告诉我我做错了什么吗?错误发生在第22行 template.copyTo(currentSpr
我知道您想通过单击启动
copyFromTemplate()
功能的按钮来增加计数器并复制工作表。如果我的理解是正确的,这次修改怎么样
修改点:
- 关于这个错误,我认为你的脚本是有效的。因此,请再次确认
1IXNLKMAPH73LCNKXP1YRV53H824Y24FUA1A297OMAK的源文件ID,以及您的脚本是否是目标电子表格的绑定脚本
- 在脚本中,由于计数器
未保存,因此当您通过按钮启动n
时,计数器始终为1copyFromTemplate()
- 我用它来增加计数器。
- 运行
时,countUp()
增加1n
- 您可以在中看到当前计数器
- 关于脚本编辑器
- 文件->项目属性->脚本属性
- 运行
- 运行
时,计数器copyFromTemplate()
将增加,并且n
将作为template
的文件名复制到当前活动电子表格中杂项“n”
如果我误解了你的问题,很抱歉。这里的第22行是空白的。对不起,我的第22行是template.copyTo(currentSpreadsheet).setName(newName)@欢迎光临。我很高兴你的问题解决了。
var n = 0;
function countUp() {
n += 1;
}
function copyFromTemplate(){
var templateSpreadsheet = SpreadsheetApp.openById('1iXnLkMaPh73lcnkXP1yRV53H824y24FUa1a297OmAKk');
var template = templateSpreadsheet.getSheets()[0]; //Assuming it is the first sheet
//The default name will be "Copy of [original name]". We can use this to change it
countUp();
var newName = ("Miscellaneous " + n);
var currentSpreadsheet = SpreadsheetApp.getActiveSpreadsheet();
template.copyTo(currentSpreadsheet).setName(newName);
}
function countUp() {
var prop = PropertiesService.getScriptProperties();
var n = prop.getProperty("n");
n = n ? parseInt(n, 10) + 1 : 1;
prop.setProperty("n", n);
return n;
}
function copyFromTemplate(){
var templateSpreadsheet = SpreadsheetApp.openById('1iXnLkMaPh73lcnkXP1yRV53H824y24FUa1a297OmAKk');
var template = templateSpreadsheet.getSheets()[0];
var newName = ("Miscellaneous " + countUp());
var currentSpreadsheet = SpreadsheetApp.getActiveSpreadsheet();
template.copyTo(currentSpreadsheet).setName(newName);
}