阅读特定电子表格中的独立Google Apps脚本

时间:2019-12-10 18:44:10

标签: google-apps-script google-sheets google-apps-script-editor

我有一个脚本,该脚本正在从Google云端硬盘创建的Apps脚本中运行,如下所示:

df = data.frame(Sample = c(rep(1,4), rep(2,4),rep(1,4), rep(2,4)),
                Replication = c(rep(1,8), rep(2,8)),
                Days = c(10,14,13,14,NA,5,18,20,16,NA,18,21,15,7,12,14))

当我在应用程序脚本中运行此脚本时,该功能可以正常工作。我现在想从工作表中的按钮运行此功能。以前,我在电子表格本身的脚本中编写了类似于以下脚本:

var ssid="14ESdH--------------------------------HOn8A";

SHEET_NAME = "Chilled Sheet";
SORT_DATA_RANGE = "A3:F";
SORT_ORDER = [
{column: 2, ascending: true}, // 1 = column number, sort by ascending order 
];

function autoSort(){
  var ss=SpreadsheetApp.openById(ssid);
  var sheet = ss.getSheetByName(SHEET_NAME);
  var range = sheet.getRange(SORT_DATA_RANGE);
  range.sort(SORT_ORDER);
}

不幸的是,使用它并以各种方式对其进行了多次编辑,但我无法获得工作表上的按钮来读取脚本function onClickButton() { var sheet = SpreadsheetApp.getActiveSheet(); autoSort(sheet); } 。我最终将其删除,并尝试使用也可以工作的按钮运行脚本onClickButton

请问有人对我如何使用激活autoSort脚本的按钮运行表格有任何想法吗?

1 个答案:

答案 0 :(得分:1)

下面是一个diagram,您可以用来创建按钮并将其连接到脚本。

现在参考此脚本:

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

您应该注意,您要包含参数“工作表”

但是在此函数定义中没有参数。

function autoSort(){
  var ss=SpreadsheetApp.openById(ssid);
  var sheet = ss.getSheetByName(SHEET_NAME);
  var range = sheet.getRange(SORT_DATA_RANGE);
  range.sort(SORT_ORDER);
}

我个人总是会包括要在函数定义中运行该函数所需的所有值。

var ssid="14ESdH--------------------------------HOn8A";
SHEET_NAME = "Chilled Sheet";
SORT_DATA_RANGE = "A3:F";
SORT_ORDER = [
{column: 2, ascending: true}, // 1 = column number, sort by ascending order];

也许您没有注意到在注释上方的那一行中,该注释被放置在SORT_ORDER的字符串内,因此行不通。

function autoSort(){
  var SHEET_NAME = "Chilled Sheet";
  var SORT_DATA_RANGE = "A3:F";
  var SORT_ORDER = [{column: 2, ascending: true}];
  var ss=SpreadsheetApp.openById(ssid);
  var sheet = ss.getSheetByName(SHEET_NAME);
  var range = sheet.getRange(SORT_DATA_RANGE);
  range.sort(SORT_ORDER);
}

并且由于他们以任何方式进行硬连线,所以我只能这样做:

function autoSort(){
  var ssid="14ESdH--------------------------------HOn8A";
  var ss=SpreadsheetApp.openById(ssid);
  var sheet = ss.getSheetByName("Chilled Sheet");
  var range = sheet.getRange("A3:F");
  range.sort([{column: 2, ascending: true}]);
}