Hacktoberfest 2026: những issue maintainer đã đánh dấu cho tháng Mười, đang mở và phù hợp người mới. Xem issue Hacktoberfest

Create watch as notification for response in Google Forms

Đang mở
#346 0 bình luận 0 reaction 1 người được giao Xem trên GitHub

@vinay-google đang làm issue này rồi.

Từ ngày 28/7/2022.

Đánh giá

Issue này chưa được đánh giá.

Mô tả

Hi!

I'm trying to reproduce a sample in AppsScript that has been published in the Google Documentation for python and Node.
It is this method: https://developers.google.com/forms/api/guides/push-notifications#create_a_watch

So basically, I have a topic created in the Cloud Pub/Sub feature for my project and want to have some kind of notification process as when a new response of Google Form has been submitted. I cannot use an email notification but I'm open to any other solution that provides me the functionality of triggering a subprocess of a Node app.

Here's the use case: For MVP reasons and getting quick results, I have embedded the form as an iframe in my Node app. When users complete the form I need to start a new process with the information provided in the form as the input.
For the time being, I thought about having set up an AppsScript in the form that publishes to a Pub/Sub topic to which the app is subscribed.

However, using the following code:

 function createWatch() {
   Logger.log('Calling the Forms API!');
   var formId = FORMID';

   // Get OAuth Token
  var OAuthToken = ScriptApp.getOAuthToken();
  Logger.log('OAuth token is: ' + OAuthToken);
  var formsAPIUrl = 'https://forms.googleapis.com/v1beta/forms/' + formId + '/' + 'watches';
  Logger.log('formsAPIUrl is: ' + formsAPIUrl);
  var watchRequest = JSON.stringify({
    "watch": {
        "target": {
          "topic": {
            "topicName": "projects/xxx/topics/xxx"
          }
        },
        "eventType": "RESPONSES"
      }
    });
  var options = {
     'headers': {
       Authorization: 'Bearer ' + OAuthToken,
       Accept: 'application/json'
     },
     'method': 'post',
     'muteHttpExceptions': true,
     'payload': watchRequest
   };  

  var response = UrlFetchApp.fetch(formsAPIUrl, options);
  Logger.log('Response from forms.responses was: ' + response);
}

... I get the following response:

{
  "error": {
    "code": 400,
    "message": "Invalid JSON payload received. Unknown name \"{\"watch\":{\"target\":{\"topic\":{\"topicName\":\"projects/fachmarkt-manager/topics/employee-onboarding\"}},\"eventType\":\"RESPONSES\"}}\": Cannot bind query parameter. Field '{\"watch\":{\"target\":{\"topic\":{\"topicName\":\"projects/fachmarkt-manager/topics/employee-onboarding\"}},\"eventType\":\"RESPONSES\"}}' could not be found in request message.",
    "status": "INVALID_ARGUMENT",
    "details": [
      {
        "@type": "type.googleapis.com/google.rpc.BadRequest",
        "fieldViolations": [
          {
            "description": "Invalid JSON payload received. Unknown name \"{\"watch\":{\"target\":{\"topic\":{\"topicName\":\"projects/fachmarkt-manager/topics/employee-onboarding\"}},\"eventType\":\"RESPONSES\"}}\": Cannot bind query parameter. Field '{\"watch\":{\"target\":{\"topic\":{\"topicName\":\"projects/fachmarkt-manager/topics/employee-onboarding\"}},\"eventType\":\"RESPONSES\"}}' could not be found in request message."
          }
        ]
      }
    ]
  }
}

I have also tried to drop the stringify of the payload but it results in the same error.

Any chances of fixing this?

Ngôn ngữ chính
JavaScript
Star
5.2k
Fork
2k
Chỉ số merge pull request
Không có pull request nào được merge trong 30 ngày

Chuẩn bị môi trường

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của googleworkspace/apps-script-samples

Tất cả issue của googleworkspace/apps-script-samples

Issue tương tự

Thêm issue về JavaScript

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.