【问题标题】:How do i link a script app in drive to my google sheet如何将驱动器中的脚本应用程序链接到我的谷歌表
【发布时间】:2019-11-28 03:03:27
【问题描述】:

我有一个在 Google 驱动器中创建的脚本,因为我希望它成为电子表格的独立脚本 - 主要是因为其他用户一直在摆弄这些脚本并且工作表在我发现之前无法正常运行所有的问题!

其中一个脚本是这样的:

var SORT_COLUMN_INDEX = 2;
var ASCENDING = true;
var NUMBER_OF_HEADER_ROWS = 2;

var activeSheet;

function autoSort(sheet) {
  var range = sheet.getDataRange();

  if (NUMBER_OF_HEADER_ROWS > 0) {
    range = range.offset(NUMBER_OF_HEADER_ROWS, 0);
  }

  range.sort( {
    column: SORT_COLUMN_INDEX,
    ascending: ASCENDING
  } );
}

function onClickButton() {
  var sheet = SpreadsheetApp.getActiveSheet();
  autoSort(sheet);
}

我在网上找到了这个,它显然将应用脚本链接到电子表格,但这对我不起作用...var ss = SpreadsheetApp.OpenFileById(xxx__xxx)

这只是在我运行脚本时返回以下内容: TypeError: Cannot find function OpenFileById in object.

请有人协助我将代码 var ss = SpreadsheetApp.OpenFileById(xxx__xxx) 放在脚本中的哪个位置,或者根据工作表 ID 查找电子表格的最佳脚本?

附言如果这有什么不同,我将需要运行函数onClickButton...

【问题讨论】:

  • 这看起来像一个容器绑定脚本。因此,如果您想通过单击按钮运行功能,则必须创建一个 webapp,以便您可以使用 html 创建按钮。这绝对不是学习 Google Apps 脚本的最简单方法。
  • 您可以从独立脚本访问您可以使用SpreadsheetApp.openById(); 访问的任何电子表格。注意:这实际上并不像用户打开电子表格那样打开电子表格。

标签: google-apps-script google-sheets


【解决方案1】:

从独立脚本中对电子表格进行排序

var ssid="Spreadsheet Id";

function sortingSS() {
  var ss=SpreadsheetApp.openById(ssid);
  var sh=ss.getSheetByName('Sheet3');
  var rg=sh.getRange(2,1,sh.getLastRow()-1,sh.getLastColumn());
  rg.sort({column:1,ascending:true});
}

排序前的工作表

排序后的工作表

将其添加到菜单

function onOpen() {
  SpreadsheetApp.getUi().createMenu("Project Menu")
  .addItem("Sorting Spreadsheet", "sortingSS")
  .addToUi();
}

Creating a button of your own

【讨论】:

  • 感谢@Cooper - 这似乎在自动排序工作表中起作用。请你确认我是如何定制这个的:var rg=sh.getRange(2,1,sh.getLastRow()-1,sh.getLastColumn());我真的想按列'2(A)'而不是'1(B)'对工作表进行排序,并且工作表有两个标题行,我如何将它添加到代码?不过到目前为止还不错.....
  • A 列是第 1 列 B 列是第 2 列 getRange(row, column, numRows, numColumns)
  • 感谢@cooper 脚本运行良好,您知道我如何将其分配给按钮吗?还是有另一种方法可以从电子表格本身手动运行该脚本?
  • 当然。看看this
  • 谢谢@Cooper - 我如何将sortingSS 函数分配给一个按钮,我以前使用过function onClickButton() { var sheet = SpreadsheetApp.getActiveSheet(); autoSort(sheet); } 这样的按钮,当按钮使用在工作表脚本编辑器中编写的代码时。由于这是 Drive 上的脚本,我如何将 sortingSS 函数分配给按钮?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多