【问题标题】:getactiverange on different sheets apps script不同工作表应用程序脚本上的 getactiverange
【发布时间】:2012-11-19 10:13:27
【问题描述】:

我正在处理一个包含多个工作表的电子表格,而且我对应用程序脚本和脚本也很陌生。我想知道是否有可能使脚本或其中的一部分仅在一张特定的工作表上工作,而不是在所有工作表上工作。

代码如下:

function setppl() {

 var ss = SpreadsheetApp.getActiveSpreadsheet();
 var sheet = ss.getSheetByName('START');


 var eventRange = sheet.getActiveRange();
 // var eventRange = SpreadsheetApp.getActiveRange(); it works as i need but it does it 
 on all of the sheets, not just 'START
 var eventColumn = eventRange.getLastColumn();
 var eventRow = eventRange.getLastRow();
 var currvalue = eventRange.getValue();
 var email = Session.getActiveUser().getEmail();

 if (eventColumn == 3) { ....

我的猜测是这种方式没有有效范围。

【问题讨论】:

    标签: google-apps-script


    【解决方案1】:

    当您调用sheet.getActiveRange() 时,它会执行它所说的操作,即它会以某种方式获取您正在访问的范围。这会覆盖您使用 ss.getSheetByName('START') 所做的工作表选择。

    您可以简单地通过其值(行、列、高度、宽度或 A1 表示法)定义范围,或者使工作表“开始”处于活动状态以强制显示该工作表(但它不会阻止用户转到另一个工作表)。

    【讨论】:

    • 所以基本上没有选项可以将函数或脚本的一部分分配给工作表的活动范围?此外,预定义范围也不是一个好主意,因为只要在新行中进行修改,它就会发生变化。 var sh = ss.getSheetByName("开始"); var row = sh.getLastRow();这给了我行数,而不是当前活动行/单元格的索引。
    • 另一个确保用户转到正确工作表的选项是保护另一个工作表以防止访问它
    • 这是不行的,因为用户组有几张表,数据由他们读取和写入主表。但无论如何,谢谢,我会尝试找到一个解决方案,也许是单独的电子表格而不是工作表,这样它就可以工作了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多