実現したいこと
gmailで受信したあるラベルで分けているメールをスプレッドシートへ反映したいです。
日付、宛先、送信元等をセルごとに分け、本文の内容を反映させるたいと思っています。
その中で、メール本文が「====」で始まるものがエラーとなってしまいます。
発生している問題・分からないこと
getPlainBodyにてメール本文を取得することはできたのですが、受信したメール本文が「====」で始まるものに関して、スプレッドシート上では「数式の解析エラーです。」と表示されてしまいセル上で反映されません。
おそらくイコールから始まることによって演算子扱いされてしまっているのかと思われるのですが、検索してもこれといった解決方法がなく、困っております。
恐れ入りますが、どなたか解決方法をご教示いただけますでしょうか。
該当のソースコード
function exportGmails() { var book = SpreadsheetApp.openById(''); var criteria = 'label:フロント宛'; var threads = GmailApp.search(criteria); var sheet = book.getActiveSheet(); sheet.getRange(1, 1).setValue('日付'); sheet.getRange(1, 2).setValue('宛先'); sheet.getRange(1, 3).setValue('送信元'); sheet.getRange(1, 4).setValue('件名'); sheet.getRange(1, 5).setValue('本文'); for (var i = 0; i < threads.length; i++) { messages = threads[i].getMessages(); message = messages[0]; console.log(message.getFrom()); rowNumber = i + 2; sheet.getRange(rowNumber, 1).setValue(message.getDate()); sheet.getRange(rowNumber, 2).setValue(message.getTo()); sheet.getRange(rowNumber, 3).setValue(message.getFrom()); sheet.getRange(rowNumber, 4).setValue(message.getSubject()); sheet.getRange(rowNumber, 5).setValue(message.getPlainBody()); } }
試したこと・調べたこと
- teratailやGoogle等で検索した
- ソースコードを自分なりに変更した
- 知人に聞いた
- その他
上記の詳細・結果
indexOf等ためしたものの、うまく処理されず、、、
他に解決策があればご教示願いたいです。
補足
特になし
先頭文字が’=’の場合に'(シングルコーテーション)を追加してはどうでしょうか。
先頭文字がシングルコーテーションの場合もシングルコーテーションを追加したほうがいいでしょう。
コメントありがとうございます。
シングルコーテーションの追加が良いとのことでしたが、どこに追加すべきでしょうか...?
勉強不足でお恥ずかしいのですが、なにか参考となるようなコードがあればご教示いただけますと幸いです。
setValueでセットする前に各値を変数に入れて、チェックした結果をsetValueすればよろしいかと思います。
let work = message.getPlainBody();
if (work.startsWith("=") || work.startsWith("'"))
{
work = "'" + work;
}
sheet.getRange(rowNumber, 5).setValue(work);
といった感じでどうですかね
コメントありがとうございます!
教えていただいたコードを試したところ、正しく本文が表示されました!
ベストアンサーに選びたいので同じ内容を回答欄に投稿いただけますでしょうか?
回答1件
あなたの回答
tips
プレビュー