独立SpreadsheetApp.getActiveSheet()始终返回第一张表

时间:2019-02-16 03:14:45

标签: google-apps-script google-sheets

SpreadsheetApp.getActiveSheet()将始终返回第一张工作表,而不是活动工作表,这很可能是新工作表中的错误。

function testActiveSheet(){

  var ssCentral = SpreadsheetApp.openById("xxxxxxxxxxx");
  var ssCentralName = ssCentral.getName();
  SpreadsheetApp.setActiveSpreadsheet(ssCentral);
  Logger.log('the ssCentralName is ' + ssCentralName);

  var currentActiveSheet = ssCentral.getActiveSheet();
  var currentActiveSheetName = currentActiveSheet.getName();

  Logger.log('the currentActiveSheetName is ' + currentActiveSheetName);
  }

尽管活动工作表不是第一个,但它仍返回第一个。

3 个答案:

答案 0 :(得分:2)

如果脚本是独立的且未绑定到特定电子表格,则活动的工作表将不存在。这不是错误,而是预期的行为。要扩展活动工作表是用户正在查看的内容,不是该脚本当前正在使用的内容;或如官方文档中所述,“电子表格中的活动工作表是在电子表格UI中显示的工作表。”

如果脚本未绑定,则不会向任何用户显示工作表,因此该函数仅返回第一张工作表!希望有道理,如果您有任何后续问题,请告诉我。

See here for details.

答案 1 :(得分:0)

响应@Chris

这是SCRIPT B

import numpy as np
import matplotib.pyplot as plt

fig, ax = plt.subplots(figsize=(8,6))

a = np.arange(5)

for i in range(1,17):
    plt.plot(a, a+i, '-b')

plt.show()

答案 2 :(得分:0)

在考虑了克里斯的回答后,我决定改变策略 现在,我将在独立的SCRIPT中调用该函数,以及从绑定到电子表格的SCRIPT中捕获的2个参数:ActiveSheet + ActiveCell。 然后根据情况返回错误消息,并根据情况显示警报。 它现在可以使用,但是我不满意,因为我想显示绑定到电子表格的SCRIPT中最有限的代码。

再次感谢克里斯花时间向我解释我所面临的问题。如果您经过巴厘岛-印度尼西亚,请告诉我,很高兴与您一起喝咖啡。我们在这里有一个开发中心。