google script detect empty cell after edit or delete

前端 未结 4 387
情深已故
情深已故 2020-12-04 00:04

I have a problem with my code. It seems fine but it doesn\'t work and I really don\'t know why. I tried everything.

I want sync my google excel with my google calen

4条回答
  •  臣服心动
    2020-12-04 00:40

    Current results(2020) with new V8 engine suggests that e.oldValue is always included, when the cell is deleted or backspaced or each of the character is deleted one by one.

    Actions:

    The following actions are taken one by one and the event object is recorded on each action with

    const onEdit = e => console.log(JSON.stringify(e));
    
    |   | B(Value)      | Action taken               |
    |---+---------------+----------------------------|
    | 3 | deletedValue1 | deleteFromPC/insertValue   |
    | 4 | deletedValue2 | backspaceFromPC            |
    | 5 | deletedValue3 | deleteCharacter1by1PC      |
    | 6 | deletedValue4 | clearFromMOBILE            |
    | 7 | deletedValue5 | deleteCharacter1By1MOBILE  |
    | 8 | deletedValue6 | overwriteValue6To6.1MOBILE |
    | 9 | deletedValue7 | overwriteValue7To7.1PC     |
    
    • insertValue: The text "deletedValue1" is inserted into B3.

    • autofillInsertedValue: The text in B3 is autofilled to B9. B3:B9 contains "deletedValue1" to "deletedValue7"

    • deleteFromPC: B3 is deleted using Delete button.

    • backspaceFromPC: B4 is selected and Backspace button is pressed. This fully clears B4.

    • deleteCharacter1by1PC: B5 is selected> Enter is pressed to enter edit mode> Each character is cleared out one by one> Enter is pressed again to exit edit mode.

    • clearFromMOBILE: In mobile app, Options is entered by long pressing and clear is pressed.(on B6)

    • deleteCharacter1By1MOBILE: Same as above, but from Mobile.(on B7)

    • overwriteValue6To6.1MOBILE: B8 value is overwritten from "deletedValue6" to "deletedValue6.1"

    • overwriteValue7To7.1PC: Same as above , but from PC on B9.

    Results:

    The following json provides the event object logged by each of the action mentioned above. The action is used as key of this result object, while the value is the actual event object logged.

    {
      "insertValue": {
        "authMode": "LIMITED",
        "range": { "columnEnd": 2, "columnStart": 2, "rowEnd": 3, "rowStart": 3 },
        "source": {},
        "user": { "email": "", "nickname": "" },
        "value": "deletedValue1"
      },
      "autofillInsertedValue": {
        "authMode": "LIMITED",
        "range": { "columnEnd": 2, "columnStart": 2, "rowEnd": 9, "rowStart": 4 },
        "source": {},
        "user": { "email": "", "nickname": "" }
      },
      "deleteFromPC": {
        "authMode": "LIMITED",
        "oldValue": "deletedValue1",
        "range": { "columnEnd": 2, "columnStart": 2, "rowEnd": 3, "rowStart": 3 },
        "source": {},
        "user": { "email": "", "nickname": "" }
      },
      "backspaceFromPC": {
        "authMode": "LIMITED",
        "oldValue": "deletedValue2",
        "range": { "columnEnd": 2, "columnStart": 2, "rowEnd": 4, "rowStart": 4 },
        "source": {},
        "user": { "email": "", "nickname": "" }
      },
      "deleteCharacter1by1PC": {
        "authMode": "LIMITED",
        "oldValue": "deletedValue3",
        "range": { "columnEnd": 2, "columnStart": 2, "rowEnd": 5, "rowStart": 5 },
        "source": {},
        "user": { "email": "", "nickname": "" }
      },
      "clearFromMOBILE": {
        "authMode": "LIMITED",
        "oldValue": "deletedValue4",
        "range": { "columnEnd": 2, "columnStart": 2, "rowEnd": 6, "rowStart": 6 },
        "source": {},
        "user": { "email": "", "nickname": "" }
      },
      "deleteCharacter1By1MOBILE": {
        "authMode": "LIMITED",
        "oldValue": "deletedValue5",
        "range": { "columnEnd": 2, "columnStart": 2, "rowEnd": 7, "rowStart": 7 },
        "source": {},
        "user": { "email": "", "nickname": "" }
      },
      "overwriteValue6To6.1MOBILE": {
        "authMode": "LIMITED",
        "oldValue": "deletedValue6",
        "range": { "columnEnd": 2, "columnStart": 2, "rowEnd": 8, "rowStart": 8 },
        "source": {},
        "user": { "email": "", "nickname": "" },
        "value": "deletedValue6.1"
      },
      "overwriteValue7To7.1PC": {
        "authMode": "LIMITED",
        "oldValue": "deletedValue7",
        "range": { "columnEnd": 2, "columnStart": 2, "rowEnd": 9, "rowStart": 9 },
        "source": {},
        "user": { "email": "", "nickname": "" },
        "value": "deletedValue7.1"
      }
    }
    

    Inferences:

    • e.oldValue key:

      • is present on all events, when cell is deleted(in any way) or overwritten
      • not present, when a empty cell is edited with new value or autofilled.
    • e.value key:

      • is present, when a new value is inserted or old value is overwritten
      • not present, when value is deleted or cell is autofilled.
    • Both value and oldValue are not present, if cell is autofilled.

提交回复
热议问题