質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

1回答

545閲覧

GAS getrangeによるセルの範囲貼り付けができない

rina_help

総合スコア0

Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

0グッド

0クリップ

投稿2021/02/16 05:45

前提・実現したいこと

メールを取得し、スプレッドに書き出すGASを作成いたしました。
一部加工が必要なため、取得した内容をシートに書き出し、書き出した内容を別シートに吐き出す仕様です。
最後の別シートに吐き出すところでエラーが発生してしまいました。
どのように解消したらよいかわからずお知恵をお貸しいただけませんでしょうか。

発生している問題・エラーメッセージ

Exception: データの行数が範囲の行数と一致しません。データは 1 行ですが、範囲は 8.行です。(行 76、ファイル

該当のソースコード

function timer() { var ss = SpreadsheetApp.getActiveSpreadsheet();//スプレッドシートapp呼び出し //受信日時指定 const date = new Date() ;//現在時刻を取得 const unixTime = date.getTime();//UNIX TIMEに変換 const now = Math.floor(unixTime/1000); //ミリ秒を秒に変換 const term = now - 600; //現在時刻から10分(600秒)前 const termStr = term.toString(); //検索期間を文字列に変換  var strTerms = 'from:(メールアドレスXXXX) subject:(件名XXXXX) is:unread'; var myThreads = GmailApp.search(strTerms, 0,500); //条件にマッチしたスレッドを取得 var myMsgs = GmailApp.getMessagesForThreads(myThreads); //スレッドからメールを取得する →二次元配列で格納 var valMsgs = []; /* 各メールから日時、送信元、件名、内容を取り出す */ for(var i=0;i<myMsgs.length;i++){ for(var j=0;j<myMsgs[i].length;j++){     myMsgs[i][j].markRead(); //既読 valMsgs[i] = [];// valMsgs[i][0] = myMsgs[i][j].getDate(); valMsgs[i][1] = myMsgs[i][j].getFrom(); valMsgs[i][2] = myMsgs[i][j].getSubject(); valMsgs[i][3] = myMsgs[i][j].getBody().slice(0,1500); valMsgs[i][4] = myThreads[i].getPermalink();   } } /* スプレッドシートに出力 */ if(myMsgs.length>0){ var ss_obj = SpreadsheetApp.getActiveSpreadsheet(); var ss_sheet_XX = ss_obj.getSheetByName("シート①"); // 探索したいシート名を入力  var ss_range = ss_sheet_XX.getRange("B:B").getValues();  var row_last_num = ss_range.filter(String).length; //Browser.msgBox(row_last_num) ss_sheet_XX.getRange(row_last_num + 1, 1, i, 5).setValues(valMsgs); //シートに貼り付け /*共有ファイル*/ var ss_copyFrom = SpreadsheetApp.getActiveSpreadsheet(); var ss_copyTo = SpreadsheetApp.openById('XXXXXXXXX'); var sheet_copyFrom = ss_copyFrom.getSheetByName('シート②'); var sheet_copyTo = ss_copyTo.getSheetByName('最終出力先');   var copyValue = sheet_copyFrom.getRange(row_last_num +1, 2, valMsgs.length, 14).getValues(); sheet_copyTo.getRange(row_last_num-7, 5, valMsgs.length+1, 14).setValues(copyValue); } }

試したこと

コンソールログにてcopyValueを確認したところデータの抽出はできておりましたが、吐き出しの範囲エラーが起きてできないと思われます。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

なにがしたいのかよくわかりませんが
sheet_copyTo.getRange(row_last_num-7, 5, copyValue.length , 14).setValues(copyValue);
でいいと思います。

投稿2021/02/17 01:17

macaron_xxx

総合スコア3191

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問