Marketoフォーム入力時、テキストエリアに改行があってもスプレッドシートへはき出す処理が知りたい | Community
Skip to main content
December 14, 2022

Marketoフォーム入力時、テキストエリアに改行があってもスプレッドシートへはき出す処理が知りたい

  • December 14, 2022
  • 1 reply
  • 224 views

弊社では、Marketoを使用したお問い合わせフォームをWebhookでSpreadSheetと連携しています。
下記コミュニティのスクリプトを参考に、スクリプト作成いたしました。
https://nation.marketo.com/t5/japan-user-group-discussions/webhook%E3%81%A7spreadsheet%E3%81%A8%E9%80%A3%E6%90%BA%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95-part%EF%BC%92/gpm-p/254292#M3268

 

[弊社で作成したスクリプト]

------------------------------------
// POSTリクエストに対する処理
function doPost(e) {

// JSONをパース
if (e == null || e.postData == null || e.postData.contents == null) {
return;
}
var requestJSON = e.postData.contents;
var requestObj = JSON.parse(requestJSON);
//
// 結果をスプレッドシートに追記
//
var spreadsheet = SpreadsheetApp.openById('xxxxxxxxxxxxxxxx'); //キーは、URL https://docs.google.com/spreadsheets/d/xxxxxxxxxxxxxxxx/edit の xxxxxxxxxxxxxxxx の部分です。
var sheet = spreadsheet.getSheetByName('シート名'); // ヘッダ行を取得
var headers = sheet.getRange(1,1,1,sheet.getLastColumn()).getValues()[0];

// ヘッダに対応するデータを取得
var values = [];

for (i in headers){
var header = headers[i];
var val = "";
val = requestObj[header];
values.push(val);
}

sheet.appendRow(values); // 0落ちさせないため

}

--------------------------------------

 

フォーム入力のテキストエリアに改行がなかった場合はスプレッドシートに正常にはき出されています。
しかし、テキストエリアで改行があった場合、スプレッドシートにフォーム入力内容すべてがはき出されない状況となっております。
※入力内容すべてというのは、スプレッドシートに全くデータがはき出されない状態です。

 

フォーム入力内容に改行があってもスプレッドシートへはき出すことはできないのでしょうか。
はき出す方法もしくは、回避策がありましたらお教えいただけますでしょうか。

よろしくお願いいたします。

This post is no longer active and is closed to new replies. Need help? Start a new post to ask your question.

1 reply

Naoki_Kumagai
Level 3
December 15, 2022

@tfky 様

株式会社ルシダスの熊谷です。

 

あくまで推測レベルですが、私なりの考えを共有させていただきます。

なにかのヒントになれば幸いです。

 

まず、GAS記述の問題というより、Webhook側の問題なのでは?と考えております。

 

コミュニティ内に「フィールドの改行がWebhookに問題を引き起こす」という旨の投稿がありました。

https://nation.marketo.com/t5/product-discussions/newline-in-form-fields-causes-problems-in-web-hook/m-p/321344#M181504

 

こちらの解決策の一文に「You should be setting Request Token Encoding=JSON 」とありました。

 

本件の元ネタとなっているこちらの投稿内にあったこちらの画像では「Request Token Encoding:None」となっておりました。

 

ということで、Webhook側の設定を「Request Token Encoding:JSON」にしていただくというのを、一度検証されてみてはいかがでしょうか?

TfkyAuthor
December 16, 2022

ご回答ありがとうございます。

 

お教えいただいた投稿を拝見し、実際に弊社が使用しているウェブフックで、
「Request Token Encoding:None」⇒「Request Token Encoding:JSON」へ変更いたしました。

すると、改行の有無に関わらず、スプレッドシートにはき出されなくなりました。
ウェブフックを呼び出すスマートキャンペーンを確認したところ、下記画像のように値をペイロードされていました。

 

また、応答タイプの部分も「なし」と「JSON」両方テストしてみましたが、上記と同じでスプレッドシートにはき出されませんでした。

 

 


今回のやり方ではできないということなのでしょうか。
それともスプレッドシートのスクリプトを編集しないといけないのでしょうか。

Naoki_Kumagai
Level 3
December 16, 2022

@tfky 様

検証いただきありがとうございます。

私の推測はハズレてしまったようですね😓

 

またまた推測レベルで申し訳ありませんが、

 

添付いただいた画像を見てふと思ったのですが、ダブルクォーテーションがダブっている箇所があるようです。

 

こちらの解決策に「I don’t understand why you’re trying to pre-create part of a webhook JSON payload.」という一文もありましたので、ペイロードのあたりでまだなにかできることがあるとすれば、

Webhookの「Template」の部分に記述するトークンを「ダブルクォーテーションなし」で記述することにより、ダブルクォーテーションのダブりが解消して、もしかしたらうまくいくかも?と考えました。