Yorumları yönetme

Google E-Tablolar, kullanıcıların belirli hücrelere yorum ekleyerek ortak çalışmasına olanak tanır.

Bu belgede, Google E-Tablolar API'sini kullanarak yorumları programatik olarak okuma, oluşturma, yanıtlama, güncelleme veya silme işlemleri nasıl yapılacağı gösterilmektedir.

Yorumları okuma

Bir e-tabloyu almak için spreadsheets kaynağında get yöntemini kullandığınızda yorum dizileri ve bağlantılar varsayılan olarak atlanır.

Yanıtın yorumları içermesi için commentsViewMode sorgu parametresini COMMENTS_VIEW_MODE_INCLUDED olarak ayarlayın. Ayrıca, arayan kullanıcının dosyada yorum erişimi varsa sorgu parametresinin COMMENTS_VIEW_MODE_DEFAULT_FOR_CURRENT_ACCESS olarak ayarlanması da yorumları döndürür.

Yanıt, hem comments hem de sheets.commentAnchors alanlarını döndürür.

Aşağıdaki kod örneğinde, bir e-tablodan yorum dizilerini ve bunların bağlantılarını (ızgara aralıkları) alan bir get isteğinin nasıl kullanılacağı gösterilmektedir:

GET https://sheets.googleapis.com/v4/spreadsheets/SPREADSHEET_ID?commentsViewMode=COMMENTS_VIEW_MODE_INCLUDED&fields=spreadsheetId,comments,sheets(properties(sheetId,title),commentAnchors)

Yanıt içinde yorumlar iki yerde döndürülür:

  • CommentThread nesnelerini içeren genel comments dizisi.
  • Yorum tutturma noktası kimliklerini hücre konumlarıyla (ızgara aralıkları) eşleyen CommentAnchor nesnelerini içeren sheets.commentAnchors dizisi.

Yorumları aralığa veya sayfaya göre filtreleme

Bir e-tabloyu alırken döndürülen verileri aralıkları (spreadsheets.get yöntemindeki ranges sorgu parametresini kullanarak) veya sayfaları (spreadsheets.getByDataFilter yönteminin istek gövdesindeki dataFilters alanını kullanarak) belirterek filtreleyebilirsiniz.

  • Aralığa veya sayfaya göre filtreleme yaparsanız: Yalnızca belirtilen aralıklara veya sayfalara sabitlenmiş yorum dizileri döndürülür. Sabitlenmemiş yorumlar (ör. orijinal hücre koordinatı silinmiş yorumlar) dahil edilmez.
  • Aralığa veya sayfaya göre filtrelemezseniz: Sabitlenmemiş yorumlar da dahil olmak üzere tüm yorum dizileri döndürülür.

Örnek yanıt

Aşağıdaki JSON örnek yanıtında, 0 kimlikli sayfada A1 hücresine (0. satır, 0. sütun) sabitlenmiş bir yorum dizisi gösterilmektedir:

{
  "spreadsheetId": "SPREADSHEET_ID",
  "sheets": [
    {
      "properties": {
        "sheetId": 0,
        "title": "Sheet1"
      },
      "commentAnchors": [
        {
          "anchorId": "ANCHOR_ID",
          "range": {
            "sheetId": 0,
            "startRowIndex": 0,
            "endRowIndex": 1,
            "startColumnIndex": 0,
            "endColumnIndex": 1
          }
        }
      ]
    }
  ],
  "comments": [
    {
      "commentId": "COMMENT_ID",
      "anchorId": "ANCHOR_ID",
      "headPost": {
        "postId": "POST_ID",
        "content": "This is a comment thread head post.",
        "contentHtml": "The content of the post as HTML.",
        "author": {
          "displayName": "DISPLAY_NAME",
          "me": true,
          "user": "users/USER"
        },
        "createTime": "2026-07-01T10:13:12Z",
        "updateTime": "2026-07-01T10:13:12Z"
      },
      "replies": [
        {
          "postId": "REPLY_POST_ID",
          "content": "This is a reply to the comment.",
          "author": {
            "displayName": "DISPLAY_NAME",
            "me": false
          },
          "createTime": "2026-07-01T10:15:00Z",
          "updateTime": "2026-07-01T10:15:00Z"
        }
      ],
      "status": "OPEN"
    }
  ],
  "commentsViewMode": "COMMENTS_VIEW_MODE_INCLUDED"
}

Yorum oluşturma ve yönetme

batchUpdate yöntemini kullanarak yorumları veya yanıtları programatik olarak ekleyebilir, düzenleyebilir ve silebilirsiniz. Bu yöntem, spreadsheets kaynağında bulunur.

Yorumları içeren toplu güncellemeler yaparken olası kısmi hataları izlemeniz gerekir. Daha fazla bilgi için Yorum güncelleme durumu başlıklı makaleyi inceleyin.

Yorum ekleme

E-tabloya yorum dizisi eklemek için InsertCommentRequest nesnesini kullanın. Yorum metni içeriğini ve yorumun coordinate kullanılarak sabitlendiği GridCoordinate nesnesini sağlamanız gerekir.

Aşağıdaki JSON örneğinde, 0 kimlikli sayfadaki B2 hücresine (1. satır, 1. sütun) atanmamış bir yorum dizisinin nasıl ekleneceği gösterilmektedir:

{
  "requests": [
    {
      "insertComment": {
        "content": "This is a comment added using the API.",
        "coordinate": {
          "sheetId": 0,
          "rowIndex": 1,
          "columnIndex": 1
        }
      }
    }
  ]
}

assigneeEmailAddress alanına kullanıcının e-posta adresini girerek yorumu belirli bir kullanıcıya atayabilirsiniz:

{
  "requests": [
    {
      "insertComment": {
        "content": "Please review the data in this cell.",
        "assigneeEmailAddress": "ASSIGNEE_EMAIL_ADDRESS",
        "coordinate": {
          "sheetId": 0,
          "rowIndex": 1,
          "columnIndex": 1
        }
      }
    }
  ]
}

Yanıt ekleme veya işlem yapma

Bir yorum dizisini yanıtlamak, çözmek veya yeniden açmak için AddCommentReplyRequest nesnesini kullanın.

Yanıtın Post nesnesiyle gösterildiği commentId ve post değerlerini sağlamanız gerekir.

Post nesnesi, yanıtı content içerir ve isteğe bağlı olarak bir commentAction belirtebilir (yorum dizisini RESOLVE veya REOPEN işlemine dahil). CommentActionType nesnesiyle temsil edilir.

Ayrıca, Post nesnesinde yeni bir assigneeEmail belirterek yorum dizisini yeniden atayabilirsiniz.

Aşağıdaki JSON örneğinde, mevcut bir yorum dizisine nasıl yanıt verileceği gösterilmektedir:

{
  "requests": [
    {
      "addCommentReply": {
        "commentId": "COMMENT_ID",
        "post": {
          "content": "Replying to the comment thread."
        }
      }
    }
  ]
}

Aşağıdaki JSON örneğinde, yorum dizisinin nasıl çözümleneceği gösterilmektedir (content alanı gerekli değildir):

{
  "requests": [
    {
      "addCommentReply": {
        "commentId": "COMMENT_ID",
        "post": {
          "commentAction": "RESOLVE"
        }
      }
    }
  ]
}

Aşağıdaki JSON örneğinde, yorum dizisinin nasıl yeniden atanacağı gösterilmektedir:

{
  "requests": [
    {
      "addCommentReply": {
        "commentId": "COMMENT_ID",
        "post": {
          "content": "Replying to the comment thread.",
          "assigneeEmail": "ASSIGNEE_EMAIL"
        }
      }
    }
  ]
}

Yayını düzenleme

Oluşturduğunuz bir yayının metin içeriğini düzenlemek için UpdateCommentPostRequest nesnesini kullanın. Yazışma commentId, düzenlemek istediğiniz yayının postId ve yeni düz metin content değerini belirtmeniz gerekir.

Aşağıdaki JSON örneğinde, bir gönderinin nasıl düzenleneceği gösterilmektedir:

{
  "requests": [
    {
      "updateCommentPost": {
        "commentId": "COMMENT_ID",
        "postId": "POST_ID",
        "content": "This is the updated comment text."
      }
    }
  ]
}

Yorumları ve yanıtları silme

Yorumları ve yanıtları silmek için iki seçeneğiniz vardır:

  • Yorum dizisini silme: Bir yorum dizisinin tamamını kaldırmak için CommentThread DeleteCommentRequest nesnesini kullanın. Bir yorum dizisini yalnızca CommentThread nesnesindeki headPost dizisinin yazarıysanız silebilirsiniz.

  • Yanıt silme: Belirli bir yanıtı Post bir CommentThread öğesinden silmek için DeleteCommentReplyRequest nesnesini kullanın. Yalnızca kendi yanıtlarınızı silebilirsiniz. commentAction veya assigneeEmail içeren yanıt gönderilerini silemezsiniz.

Aşağıdaki JSON örneğinde, yorum dizisinin nasıl silineceği gösterilmektedir:

{
  "requests": [
    {
      "deleteComment": {
        "commentId": "COMMENT_ID"
      }
    }
  ]
}

Yorum güncelleme durumu

Yorum dizilerinin kaydedilmesini gerektiren isteklerde (ör. yorum ekleme veya yanıt ekleme) kısmi hatalar yaşanabilir. Bu gibi durumlarda, e-tablo modelindeki değişiklikler (ör. hücre değerlerini güncelleme veya sayfa ekleme) başarıyla işlenebilir ancak ilişkili yorumlar kaydedilemeyebilir.

Yorum güncellemelerinin başarıyla uygulanıp uygulanmadığını, spreadsheets.batchUpdate yönteminin yanıt gövdesindeki commentUpdateState alanını kontrol ederek doğrulayabilirsiniz. Alan, CommentUpdateState nesnesiyle gösterilir.

Aşağıdaki durumlar CommentUpdateState içinde döndürülür:

  • NO_UPDATES_REQUESTED: Toplu işlemde yorum güncellemeleri istenmedi.
  • ALL_SAVED: İstenen tüm yorum güncellemeleri başarıyla uygulandı.
  • ALL_FAILED_UNKNOWN_REASON: Diğer e-tablo değişiklikleri kaydedilmiş olsa bile, istenen tüm yorum güncellemeleri kaydedilemedi.