前提・実現したいこと
ド初心者です。
以下のURLを参考にして、メールフォームからスプレッドシートに抽出するシステムを作っています。
https://www.virment.com/google-apps-script-gmail-spreadsheet/
当該サイトどおり作りましたが、どうもメール2通目から以下のエラーメッセージが発生しました。
発生している問題・エラーメッセージ
データの行数が範囲の行数と一致しません。データは X 行ですが、範囲は 1.行です。(行 55、ファイル「コード」)
Xの数字は、var threadの行にあります、GmailApp.searchで該当するメールの既読を含めたスレッド数でした。
GAS
function getMailandInsert(){ var sheet = SpreadsheetApp.getActiveSheet(); // start potision var start = 0; // 取得するメールの最大件数 var max = 5; // スプレッドシートに挿入するデータ列数 var insertCol = 6; // 条件にマッチする受信メールを取得 var threads = GmailApp.search('is:unread from:(aaa@aaa.co.jp) subject:(wakaran)',start,max); // 条件にマッチしたスレッド数 var length = threads.length; // データ保存先となるシートの最終行。すなわち挿入開始位置 var row = sheet.getLastRow() + 1; // 取得したメール内容を格納する用の配列 var resultArr = new Array(); for( var n in threads ){ var the = threads[n]; // スレッド内のメールを取得 var msgs = the.getMessages(); // スレッド内のメールを解析して resultArr に格納 returnData(msgs, resultArr); // 取得したスレッドを既読にする the.markRead(); Utilities.sleep(1000); } if( length != 0 ){ sheet.getRange(row, 1, length, insertCol).setValues( resultArr ); // データ保存 //########上がエラーが出た行。エラーメッセージでデータの行数が複数行と言われるが...########## //getRangeの中身は(最終行+1,1,スレッド数,6) } } function returnData(msgs, resArray) { for( m in msgs ){ try{ var tempArray = new Array(); var msg = msgs[m]; // メールの日付 var date = msg.getDate(); // メールの送信元アドレス var from = msg.getFrom(); // メールの件名 var subject = msg.getSubject(); // メール本文をPlainBodyで取得 var body = msg.getPlainBody(); // bodyをXMLパーサーで解析 var xml = XmlService.parse(body); // XML解析結果のルート要素を取得 var root = xml.getRootElement(); // XML内の各子要素を指定してその値を取得。 var hinichi = root.getChild("hinichi").getText(); var zzz = root.getChild("zzz").getText(); var xxx = root.getChild("xxx").getText(); var ddd = root.getChild("ddd").getText(); var vvv = root.getChild("vvv").getText(); var etc = root.getChild("etc").getText(); // 各値を配列に格納 tempArray[0] = hinichi; tempArray[1] = zzz; tempArray[2] = ddd; tempArray[3] = eisei; tempArray[4] = vvv; tempArray[5] = etc; // 配列をpushで末尾に追加 resArray.push(tempArray); }catch(e){ Logger.log("Error: " + e); } } }
試したこと
一番最初のメールだけうまくいきましたが、二通目以降は作動せず。
色々足りないかもしれませんが、よろしくお願いいたします。
補足情報(FW/ツールのバージョンなど)
chrome最新版
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/11/27 01:24 編集