ss.insertSheet问题 - 插入的工作表名称错误

时间:2015-11-02 13:11:59

标签: google-apps-script google-sheets

您好我写了一个小脚本来复制电子表格中的一个模板表,作为同一电子表格中的新表格。

我写了两个版本,一个是由菜单驱动的,要求创建新工作表的名称:

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]

中分配

有谁知道为什么会出现这种行为以及如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

您的第二个脚本不使用正确的变量类型。您使用插页的方法使用类型(<string>, {template:<sheet>})。由于您的客户ID是一个数字,它不起作用。你可以做一个简单的修复

更改

var insertpage = data[i][1];

成:

var insertpage = data[i][1].toString();

您现在可以使用客户ID(这是一个数字)来创建工作表名称(这是一个字符串)