2

私はGoogleスクリプトへの投稿を使用する必要があり(以下を参照)、スクリプトの最後に、すべてがうまくいったというフィードバックをスクリプトから受け取りたいです。

function doPost(e){
   var idm = e.parameter.idm;
   var sheet_purchaseHistory = SpreadsheetApp.getActive().getSheetByName('purchaseHistory');
   var date = new Date();
   var time = Utilities.formatDate(date, 'Asia/Tokyo', 'yyyy/MM/dd HH:mm:ss');
   sheet_purchaseHistory.getRange(sheet_purchaseHistory.getLastRow()+1, 1).setValue(time);
   sheet_purchaseHistory.getRange(sheet_purchaseHistory.getLastRow(), 2).setValue(mailadress);
   return ContentService.createTextOutput(JSON.stringify({'status': 'success'})).setMimeType(ContentService.MimeType.JSON);
}

私のcppコードには次のものがあります:

ヘッダー (.h)

QNetworkRequest request;
QNetworkAccessManager *manager;
QByteArray ba;
QNetworkReply* reply;

コンストラクタ:

manager = new QNetworkAccessManager(this);  // I tried with and without parsing the (this)
request.setUrl(QUrl("https://script.google.com/macros/s/AKfycbzhHBpZ8jMfa2bwE_A0lQJNqOzVl894dcjkch_-0mNC6EX9usn1/exec"));

関数内:

manager->setRedirectPolicy(QNetworkRequest::NoLessSafeRedirectPolicy);
request.setHeader(QNetworkRequest::ContentTypeHeader, "application/x-www-form-urlencoded");
QUrlQuery postData;
postData.addQueryItem("idm", "string");
QNetworkReply *rp = manager->post(request,postData.toString(QUrl::FullyEncoded).toUtf8());
QEventLoop loop;
connect(rp, SIGNAL(finished()), &loop, SLOT(quit())); //readready SIGNAL also tried
loop.exec();
QByteArray data = rp->readAll();
QString dataReply(data);
qDebug() << dataReply;

何が起こるかというと、常に null を受け取ります。QUrlQuery と ByteArray を使用してさまざまなヘッダーを設定するなど、さまざまなシグナル (readyread、finished...) などのいくつかの組み合わせを既に試しましたが、成功しませんでした。

また、パラメーターがリクエスト ( https://address?parameters=string ) に含まれている場合、リターンを受け取ることができることにも気付きました。(この場合、「postdate」からパラメータを削除し、post「req」に含めます。

QNetworkReply *rep = man->post(req,postdata);

RESTESTTEST の印刷: https://resttesttest.com/を使用して投稿しようとしましたが、正常に動作しました。以下のコメントを寄せた

誰か助けてくれませんか?

4

1 に答える 1