Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/5.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 .getUsername()在工作区帐户中运行不正常_Google Apps Script_Google Sheets_Google Workspace - Fatal编程技术网

Google apps script .getUsername()在工作区帐户中运行不正常

Google apps script .getUsername()在工作区帐户中运行不正常,google-apps-script,google-sheets,google-workspace,Google Apps Script,Google Sheets,Google Workspace,由两部分组成的问题: 下面的脚本用于监视特定工作表第6列中的编辑,并在触发时执行脚本的三个部分(下面标记为a-C)。作为工作区帐户中工作表的所有者,所有这些都可以正常工作。对于编辑工作表的其他用户,A部分工作正常,但B或C部分工作正常。所有用户都是同一工作区帐户的一部分 除了只看第6列之外,还有什么建议可以让我重写脚本来记录给定行上最近编辑的单元格的位置吗 多谢各位 function onEdit(e) { if ( e.source.getSheetName() == &quo

由两部分组成的问题:

  • 下面的脚本用于监视特定工作表第6列中的编辑,并在触发时执行脚本的三个部分(下面标记为a-C)。作为工作区帐户中工作表的所有者,所有这些都可以正常工作。对于编辑工作表的其他用户,A部分工作正常,但B或C部分工作正常。所有用户都是同一工作区帐户的一部分

  • 除了只看第6列之外,还有什么建议可以让我重写脚本来记录给定行上最近编辑的单元格的位置吗

  • 多谢各位

    function onEdit(e) {
      if (
        e.source.getSheetName() == "STATUS" &&
        e.range.columnStart == 6 &&
        e.range.columnEnd == 6 &&
        e.range.rowStart >= 2 &&
        e.range.rowEnd <= 2000
         ) {
           var range = e.range;
           var status = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("STATUS");
           
        //A: on modified row, copy live status to permanent
           status.getRange(range.getRow() , 11).copyTo(status.getRange(range.getRow() , 7), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
           
        //B: set time & date modified
           status.getRange(range.getRow() , 8).setValue(new Date());
           
        //C: set user who last modified ID column
           status.getRange(range.getRow() , 9).setValue(Session.getEffectiveUser().getUsername());
           
           }
        else
        { return; }
       }
    
    函数onEdit(e){
    如果(
    e、 source.getSheetName()=“状态”&&
    e、 range.columnStart==6&&
    e、 range.columnEnd==6&&
    e、 range.rowStart>=2&&
    e、 range.rowEnd使用getEffectiveUser()获取脚本正在其权限下运行的用户,将其更改为getActiveUser()。请参阅。要获取OneEdit范围的列和行,请尝试以下操作:

    • e、 range.getRow()
    • e、 range.getColumn()
      • 在a中,相当于,表示:

        电子邮件地址可用的情况各不相同:例如,用户的电子邮件地址在任何允许脚本在未经用户授权的情况下运行的上下文中都不可用,例如简单的onOpen(e)或OneEdit(e)触发器

        您应该能够将“电子邮件地址”概括为用户名或任何其他个人身份信息。此类信息需要授权

        唯一的办法是让你的其他用户先授权这个脚本

        如果不希望触发器仅限于第6列中的编辑,请从If语句中删除该条件

        // These lines specify column 6
        e.range.columnStart == 6 &&
        e.range.columnEnd == 6 &&
        

        我无法重现此行为。无论编辑用户是否是所有者,脚本都可以正常工作。能否提供有关
        部分A正常工作的更多详细信息,而不是B或C
        ?您是否收到任何错误?您是否检查了脚本在何处停止执行(执行某些操作、前往等)?