前提・実現したいこと
Gmailの未読メール本文を取り出し、スプレッドシートに自動転記したい。
スプレッドシート上でmyFunctionを実行中に下記の「Exception: The starting row of the range is too small.」エラーが発生しています。どの部分が誤りなのか判りません。
##発生しているエラー
Exception: The starting row of the range is too small.
(匿名) @ 試作.gs:29
(匿名) @ 試作.gs:11
myFunction @ 試作.gs:6
###該当のソースコード
function myFunction() {
// 検索条件に該当するスレッド一覧を取得
var threads = GmailApp.search('is:unread');
// スレッドを一つずつ取り出す
threads.forEach(function(thread) {
// スレッド内のメール一覧を取得
var messages = thread.getMessages();
// メールを一つずつ取り出す
messages.forEach(function(message) {
// メール本文を取得
var plainBody = message.getPlainBody();
// 番号を取り出す
var number = plainBody.match(/番号:(.*)/);
// メールアドレスを取り出す
var email = plainBody.match(/メールアドレス: (.*)/);
// 書き込むシートを取得
var sheet = SpreadsheetApp.getActive().getSheetByName('任意のシート名');
// 最終行を取得
var lastRow = sheet.getLastRow();
// セルを取得して値を転記
sheet.getRange(lastRow, 1).setValue(plainBody[1]);
sheet.getRange(lastRow, 2).setValue(number[1]);
sheet.getRange(lastRow, 3).setValue(email[1]);
});
// スレッドに転記ラベルを付ける
var label = GmailApp.getUserLabelByName('転記');
thread.addLabel(label);
});
}
####試したこと
別の質問で‘シート名’に誤りがあることを教えていただき修正後の実行です。シートは認識してくれているようなのですが、何に対してのエラーなのでしょうか。
#####自己解決方法(質問後にやってみたこと)
function myFunction() {
// 検索条件に該当するスレッド一覧を取得
var threads = GmailApp.search('is:unread');
// スレッドを一つずつ取り出す
threads.forEach(function(thread) {
// スレッド内のメール一覧を取得
var messages = thread.getMessages();
// メールを一つずつ取り出す messages.forEach(function(message) {
// メール本文を取得
var plainBody = message.getPlainBody();
// 書き込むシートを取得
var sheet = SpreadsheetApp.getActive().getSheetByName('転記中');
// 最終行を取得
var lastRow = sheet.getLastRow() + 1;
// セルを取得して値を転記
sheet.getRange(lastRow, 1).setValue(plainBody[1]);
});
// スレッドに未対応ラベルを付ける var label = GmailApp.getUserLabelByName('未対応'); thread.addLabel(label);
});
}
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/12/17 08:11