var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('元シート'); var lastrow = sheet.getDataRange().getLastRow(); var mainsheet = sheet.getRange(1, 1, lastrow,49).getValues(); var sarchrow=0; var copyrow=1; var writesheet2 = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('書き出し用シート'); for(sarchrow=0;sarchrow<lastrow;sarchrow++){ mainsheet.getRange('A'+sarchrow+':AV'+sarchrow).copyTo(writesheet2.getRange(copyrow,1),{contentsOnly:true}); copyrow=copyrow+1; }
上記コード(省略箇所あり)にて、
```
mainsheet.getRange('A'+sarchrow+':AV'+sarchrow).copyTo(writesheet2.getRange(copyrow,1),{contentsOnly:true});
この行で【TypeError: mainsheet.getRange is not a function】とエラーが出てしまい進めることが出来ません。 やりたいことは、 for文でコピー元シートの1行目から最終行までを検索し、if文で判定を通過した場合に該当行の情報全てを別シートに1行目から順々に足していく、ということとなっています。 コピー元シートには49列までデータが入っております。 GAS初心者なりに色々調べ、代用として ``` var copyValue = mainsheet.getRange('A'+sarchrow+':AV'+sarchrow).getValues(); ←ここで止まる writesheet2.getRange('A'+copyrow+':AV'+copyrow).setValues(copyValue);
なども試したのですが同様の結果で止まってしまい、手詰まりとなってしまったので質問させていただきました。
おそらく配列の扱い間違い等で初心者の質問となってしまう気がするのですが、何が問題なのかが分からない状態となってしまっているのでお力を貸していただけないでしょうか。
宜しくお願い致します。
コードがごちゃごちゃになってる印象です。
具体的なやりたい事も記載いただくと良いかと。(コピー元、貼付け先の、シート名、範囲)
追記を確認しました。やりたいこともなんとなく理解できました。ただ、"if文で判定を通過した"の部分はコードからはよみとれ無いです。もう少し具体的に書くか、ifを含めたコードがあるなら記入を。
あと、コードはcodeボタン押してそのなかに記載した方が良いです
codeボタンの存在を知らせていただきありがとうございます。
また、今回の質問の内容自体はエラーをどのようにすれば回避できるかを知りたいと思っております。
出先となってしまいif文の条件がどのようになっていたか少し覚えてないのですが、
内容は3列目の日にちが入っているセルをtodayと比較して数日以内であれば通す。
というような今回の質問意図には関係ないものであったため省いております。この行ではエラーは出ておりません。
なるほど承知しました。エラー箇所についての回答入れときます
回答1件
あなたの回答
tips
プレビュー