前提
Gmailで送られてきたフォームの内容を、GASで自動的にスプレッドシートに転記する処理についてお伺いします。
実現したいこと
ーー送られてくるメール本文ーーー
◆指定コード
xxxxxxx(数字)
◆利用時間
yyyy/mm/dd (日付)
◆利用枚数(枚)
x(1など数字)
管理番号
xxxxxxxxx(英数字)
ーーメール本文ーー
これをスプレッドシートに自動で転記するようにしたいのですが、「◆利用枚数(枚)」だけが反映出来ません。おそらく、半角のカッコが入ってしまっているためだと思っています。(フォームの内容は変更出来ません。。)
function myFunction() {
// 検索条件に該当するスレッド一覧を取得
var threads = GmailApp.search('subject:メール本文 -label:ラベル from:メール送信先');
// スレッドを一つずつ取り出す
threads.forEach(function(thread) {
// スレッド内のメール一覧を取得
var messages = thread.getMessages();
// メールを一つずつ取り出す messages.forEach(function(message) { // メール本文を取得 var plainBody = message.getPlainBody();
// 店舗指定コードを取り出す
var code = plainBody.match(/◆指定コード\r\n(.*)/);
// 利用時間を取り出す
var date = plainBody.match(/◆利用時間\r\n(.*)/);
// 利用枚数を取り出す
var number = plainBody.match(/◆利用枚数(枚)\r\n(.*)/);
// 管理番号を取り出す
var managementNumber = plainBody.match(/管理番号\r\n(.*)/);
var sheet = SpreadsheetApp.getActive().getSheetByName('シート名');
var lastRow = sheet.getLastRow() + 1;
sheet.getRange(lastRow, 1).setValue(code[1]);
sheet.getRange(lastRow, 3).setValue(date[1]);
sheet.getRange(lastRow, 4).setValue(number[1]);
sheet.getRange(lastRow, 5).setValue(managementNumber[1]);
sheet.getRange(lastRow, 6).setValue(plainBody);
// 受信日時順の昇順に並び替え
var range = sheet.getRange("A:U");
range.sort({column: 1, ascending: true});
});
// スレッドに処理済みラベルを付ける
var label = GmailApp.getUserLabelByName('処理済み');
thread.addLabel(label);
});
}
### 発生している問題・エラーメッセージ
エラーメッセージ
上記で実行すると myFunction を実行しようとしましたが、プロジェクトを保存できませんでした。と、エラーになってしまいます。この半角カッコを全角に直した時、この「利用枚数」以外はスプレッドシートに転記出来ています。「利用枚数」の数字を取り出したいのですが、どのようにしたら良いのかわかりません。どうかご教授宜しくお願いします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/10/29 16:49