【发布时间】:2015-11-02 13:11:58
【问题描述】:
您好,我编写了一个小脚本来复制电子表格中的一个模板工作表,作为同一个电子表格中的新工作表。
我写了两个版本,一个由一个菜单驱动,询问要创建的新工作表的名称:
function addonenewSheet() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var temp = ss.getSheetByName('template');
var naame = Browser.inputBox("CustomerID to be created");
try {
ss.setActiveSheet(ss.getSheetByName(naame));
}
catch (e) {
ss.insertSheet(naame, {template:temp});
}
}
这个按预期工作,如果我在输入框中这样说,它会命名新工作表 234。
第二个函数非常相似,但会解析一些值并尝试一次创建多个工作表:
function addmissingSheets() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var temp = ss.getSheetByName('template');
var sheet = SpreadsheetApp.getActiveSheet();
var data = sheet.getDataRange().getValues();
for (var i = 10; i < data.length; i++) {
if(typeof data[i][1] == 'number'){
try {
ss.setActiveSheet(ss.getSheetByName(data[i][1]));
}
catch (e) {
Logger.log('Customer ID: ' + data[i][1]);
var insertpage = data[i][1];
ss.insertSheet(insertpage, {template:temp});
}
}
}
}
就 Logger.log 而言,data[i][1] 具有正确的值,但 insertSheet 以某种方式创建名为“模板副本”、“模板 2 副本”的工作表...而不是取值在数据[i][1]中赋值
有谁知道为什么会出现这种行为以及如何解决这个问题?
【问题讨论】:
-
您介意与代码共享工作表吗?
-
工作表上的一些数据是敏感的,当我删除它时,函数不再有输入......但是,记录器的输出(因此 data[i] 的值[1]) 是 [15-11-02 15:04:17:475 CET] 客户 ID:59 [15-11-02 15:04:17:476 CET] 客户 ID:58 [15-11-02 15 :04:17:477 CET] 客户 ID:57 [15-11-02 15:04:17:478 CET] 客户 ID:223 ......因此这些值应该类似于我给出的 234输入框示例
标签: google-apps-script google-sheets