Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google apps script 在Google应用程序脚本中创建附加组件_Google Apps Script - Fatal编程技术网

Google apps script 在Google应用程序脚本中创建附加组件

Google apps script 在Google应用程序脚本中创建附加组件,google-apps-script,Google Apps Script,我已经把一些代码放在一起,我想在其他Google表单中访问这些代码,但是,由于它使用SpreadsheetApp.getUi,这些代码必须绑定到一个表单上。因此,我决定将代码创建为一个附加组件 不幸的是,除非我打开应用程序脚本页面,否则这些附加组件不会出现在其他电子表格中,也不会从创建附加组件的电子表格中消失。我哪里做错了 var ui = SpreadsheetApp.getUi(); var ss = SpreadsheetApp.getActiveSpreadsheet(); funct

我已经把一些代码放在一起,我想在其他Google表单中访问这些代码,但是,由于它使用SpreadsheetApp.getUi,这些代码必须绑定到一个表单上。因此,我决定将代码创建为一个附加组件

不幸的是,除非我打开应用程序脚本页面,否则这些附加组件不会出现在其他电子表格中,也不会从创建附加组件的电子表格中消失。我哪里做错了

var ui = SpreadsheetApp.getUi();
var ss = SpreadsheetApp.getActiveSpreadsheet();

function onOpen(e) {
  SpreadsheetApp.getUi().createAddonMenu()
  .addItem("Delete Columns", "delCols")
  .addItem("Insert Columns", "insCols")
  .addItem("Subjects Sheet", "deptNamesKS4")
  .addItem("Subjects Sheet", "deptNamesKS3")
  .addToUi();

};

function onInstall(e) {
  onOpen(e);
};

function delCols(e) {

  var lastColumn = ss.getLastColumn();
  var headers = ss.getRange('1:1').getValues();

  var searchVal = ui.prompt("Enter name of column to be deleted").getResponseText()

  var names = headers[0];
  var loopCounter = names.length - 1

  for (var i = loopCounter; i >= 1; i--) {
    if(names[i].indexOf(searchVal) > -1) {
      ss.deleteColumn(i + 1);
    }DE
  }
}

function insCols(e) {

  var lastColumn = ss.getLastColumn();
  var headers = ss.getRange('1:1').getValues();

  var searchVal = ui.prompt("Enter name of column to be deleted").getResponseText();
  var noCols = ui.prompt("Number of columns to be inserted").getResponseText();

  var names = headers[0];
  var loopCounter = names.length - 1

  for (var i = loopCounter; i >= 1; i--) {
    if(names[i].indexOf(searchVal) > -1) {
      ss.insertColumnsBefore(i + 1, noCols);
    }
  }
}
任何帮助都将不胜感激


谢谢

要在其他文件中使用该加载项,您必须执行以下操作之一:

(1) 如前所述,发布附加组件

(2) 通过
Run>testasadd-on…
测试附加组件。我不建议这样做,因为您必须首先添加要使用附加组件的每个文件,然后从那里打开该文件

解决方法(使用库):
为了达到您的目的,一个可能的解决方法是,考虑到您希望该附加组件用于什么,而不是将您的代码用作附加组件,保存它,然后在您希望它运行的每个文件中(您必须将
createAddonMenu
更改为
createMenu
)。

查看文档;生成一个add-ontanks-lamblichus需要相当多的时间,我将研究上面的方法。我确实在这个链接中尝试了代码,它在不必发布为加载项的情况下工作了@Fazila我想你是说它在你绑定脚本的文档中工作了吧?是的,它在文档和我打开的其他文档中工作了,在其他文档中也有加载项。@Fazila该加载项在其他文档中不可用如果您只执行快速启动中指定的操作。为了在其他文档中使用该附加组件,您遵循了哪些步骤?我一定是弄错了,我尝试再次复制并运行代码,您是对的,其他文档中不提供该附加组件。我不确定以前是如何获得该附加组件的,除非我正在查看同一文档并且没有意识到。我将考虑创建一个库或发布作为一个附加组件,尽管我是一个新手,并且没有使用任何提示/提示的方法,或者如果您知道任何人可以提供一个分步指导。再次感谢你抽出时间,兰布利库斯,我真的很感激。