実現したいこと
googleフォームで回答があった際に、回答内容のみをタブ区切りでメール受信する
前提、発生している問題
Google Apps Script を使用して以下のコードを記載しています。
function sendForm(e){ // メールの件名 var subject = "〇〇についてのお問い合わせ"; // メール送信先 var to = "受信するメールアドレス"; // メール本文 var body = ""; var itemResponses = e.response.getItemResponses(); for (var i = 0; i < itemResponses.length; i++) { var itemResponse = itemResponses[i]; var answer = itemResponse.getResponse(); // 質問に対する回答内容 body += answer + "\t"; } MailApp.sendEmail({to:to,subject:subject, body:body}); }
回答があった際に問題なくメール受信はできていますが、タブ区切りが半角スペースに化けてしまっております。
タブを挿入する方法をご教授お願いします。
たまたま、タブ間隔がスペース1個分だっただけでは?
当方では、前の文字数にもよりますがタブになって送信されてますよ。
もしかして、
タブ間隔分のスペースではなくタブ記号のままテキスト送信したいということですね。
メール本文をそのままコピーして、サクラエディタなどに貼り付けるとスペースに化けています。
やりたいこととしては、Excelに貼り付けをして、回答内容ごとに別セルで記載したいと思っています。回答内容にスペースが含まれことがあるので、タブで区切りたいといった状況です。
Gmailのテキストメールにタブ記号(タブ間隔分のスペースではなく)を挿入する方法(GASではなく、手動送信の際)をご存知ですか?
ご存知ないです。
ちなみにメーラーはthunderbirdを使用しています。
コピペした値ではなく、
実際のメール本文がどうなっているのかを確認してみました。
メール本文を簡略化するために
function sendMessage() {
const to = '自分のメールアドレス';
const subject = '送信テストタブ';
let body = 'A';
body += '\t';
body += 'B';
body += '\n';
body += 'C';
MailApp.sendEmail(to,subject, body);
}
として自分宛にメールを送って未読のままにしておいて、
function debug() {
const threads = GmailApp.search('is: unread');
const messages = GmailApp.getMessagesForThreads(threads);
for (const thread of messages) {
for (const message of thread) {
const body = message.getPlainBody();
for (let i = 0; i < body.length; i++) {
console.log(body.charCodeAt(i));
}
}
}
}
とするとA(65)のつぎは、
タブ記号(9)になってますね。
なお、Gmailのメッセージのソースを表示させてみるとスペースではなくタブになっていることが確認できます。(その部分を選択するとスペースの連続ではなく長い幅の空白1文字が選択される。)
タブ記号のまま取り出せないのであれば、スペース以外で回答内容に含まれないであろう特殊な文字または記号をタブ記号の代わりに挟むようにしてはどうですか。
$や&や#または⌘とか。。。
タブ記号のまま取り出すのは難しそうなので、記号を使って区切ろうと思います。
ありがとうございました。

あなたの回答
tips
プレビュー