让计数器在Google表格中工作的问题

时间:2018-01-24 02:35:57

标签: javascript google-sheets

我正在尝试在Google工作表中创建一个按钮,当按下该按钮时,会将工作表从单独的电子表格导入到当前的工作表中,并将其命名为“Miscellaneous”,后跟数字1到无穷大。

例如,第一次按下按钮时,它将导入一张纸并将其称为“杂项1”,第二次按下按钮将导入另一张名为“杂项2”的纸张,依此类推......

我有导入工作,现在我正在尝试使用计数器在“杂项”之后增加数字。有人能告诉我我做错了什么吗?错误发生在第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);


}

1 个答案:

答案 0 :(得分:1)

据我所知,您想通过点击启动copyFromTemplate()功能的按钮来增加计数器和复印表。如果我的理解是正确的,那么这个修改怎么样?

修改要点:

  • 关于错误,我认为您的脚本有效。因此,请确认1iXnLkMaPh73lcnkXP1yRV53H824y24FUa1a297OmAKk的源文件ID,以及您的脚本是否是目标电子表格的绑定脚本。
  • 在您的脚本中,由于未保存计数器n,因此当您通过按钮启动copyFromTemplate()时,计数器始终为1.

上面反映的修改后的脚本如下。

修改后的脚本:

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);
}

注意:

  • 我使用PropertiesService来增加计数器。
    • 运行countUp()时,n会增加1。
    • 你可以看到当前的计数器
      • 在脚本编辑器上
      • 文件 - >项目属性 - >脚本属性
  • 当您运行copyFromTemplate()时,计数器n会增加,template会以Miscellaneous "n"的文件名复制到当前有效的电子表格。

如果我误解了你的问题,我很抱歉。