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

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

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

Google+とは、Googleが提供するソーシャル・ネットワーキング・サービスです。情報を共有するユーザーの範囲を設定する「サークル」、Webカメラで複数名の相手と無料でビデオチャットできる「ハングアウト」などの機能があります。

Google スプレッドシート

Google スプレッドシートは、フリーで利用できる表計算ソフト。Webアプリのためインターネットに接続することで利用できます。チャートやグラフの作成のほか、シートを他のユーザーと共有したり、同時に作業を進めることも可能です。

Google Apps Script

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

Q&A

1回答

386閲覧

Google Apps Script[GAS]clear構文 削除ができない

gatti

総合スコア3

Google+

Google+とは、Googleが提供するソーシャル・ネットワーキング・サービスです。情報を共有するユーザーの範囲を設定する「サークル」、Webカメラで複数名の相手と無料でビデオチャットできる「ハングアウト」などの機能があります。

Google スプレッドシート

Google スプレッドシートは、フリーで利用できる表計算ソフト。Webアプリのためインターネットに接続することで利用できます。チャートやグラフの作成のほか、シートを他のユーザーと共有したり、同時に作業を進めることも可能です。

Google Apps Script

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

0グッド

1クリップ

投稿2022/04/06 07:08

編集2022/04/09 01:56

前提

別のシートからセルを転記させるためにシートを作成しました。
GASについて詳しくないのでご教示お願いします。

実現したいこと

①と②のページを作成し、それぞれのページを別のシートに転記させたい。
プルダウンから選択→転記→値のみ削除
①のページは削除が上手くいくのですが、②は転記後に削除ができず文字が残ってしまいます。

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

範囲の行数には 1 以上を指定してください。

②だけ削除させません。

該当のソースコード

function myFunction() { //転記先シートの指定 var ss = SpreadsheetApp.getActiveSpreadsheet(); var css = ss.getSheetByName("転記先"); var klr = css.getLastRow(); Logger.log(klr); //転記先シートT列~W列の取得 var gkl = css.getRange(2,20,klr-1,16).getValues(); var gkl2 = gkl.flat(); //Logger.log(gkl); //配列化 var id = []; for(var i=0; i<gkl.length; i++){ if(gkl[i][0] === gkl[i][0]) { id.push(gkl[i][3]); } } //Logger.log(id); //1次元化 var gpv = css.getRange(2,23,klr,1).getValues(); var gpvf = gpv.flat(); //Logger.log(gpvf); //転記 for(var j = 0; j<gkl2.length; j++){ var check = id.indexOf(gpvf[j]); //可否の判定 if(check >= 0){ //確認 css.getRange(j+2,20,1,1).setValue(gkl[j][12]); //処理指示 css.getRange(j+2,28,1,1).setValue(gkl[j][15]); } } var mss = SpreadsheetApp.openById("転記先URL"); var msheet = mss.getSheetByName("①"); var slr = msheet.getLastRow(); msheet.getRange(2,13,slr-1,2).clear({ formatOnly: false, contentsOnly: true }); var mksheet = mss.getSheetByName("②"); var sklr = mksheet.getLastRow(); mksheet.getRange(2,13,sKlr-1,2).clear({ formatOnly: false, contentsOnly: true }); }

試したこと

①を削除する構文を消して、②だけ削除する構文を試したところ問題なく削除できました。①と②の両方を削除するのがいけないのでしょうか。

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

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

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

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

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

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

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

guest

回答1

0

var sklr = mksheet.getLastRow();
mksheet.getRange(2,13,sKlr-1,2).clear({ formatOnly: false, contentsOnly: true });

sklrで宣言して、sKlr(Kが大文字)で使用しているのが原因ではないでしょうか。

投稿2022/04/06 07:16

mkk

総合スコア378

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

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

gatti

2022/04/06 07:38

早急なご回答ありがとうございました。 小文字に変更してみましたが出来ませんでした。別の原因があれば教えていただけますでしょうか。
mkk

2022/04/06 07:53

それ以外は同じ構文構成かと思いますので、シート①と②の違い等が考えられます。 ブレークポイントを指定して1行ずつ実行してみて、slrやsklrにどのような値が入るかなどを検証してみてはいかがでしょうか。 ちなみに転記をする部分のプログラムが見当たりませんが、提示してもらっているプログラムは一部のみなのでしょうか?
gatti

2022/04/06 08:35

シートに違いがないか改めて確認してみます。 転記はうまく実行できているので削除に対応する一部プログラムのみ載せました。
mkk

2022/04/06 09:18

転記部分の影響で動きの違いなどが出ている場合がありますので、差し支えなければ転記部分も含めた全体のプログラムを質問文の中に追記していただけるでしょうか。
gatti

2022/04/07 01:54

追記しました。ご確認よろしくお願い致します。
mkk

2022/04/07 04:03

うーん、原因が分かりませんね。 それぞれのシートのM2から、幅2、高さslr-1(sklr-1)分を削除したいということですよね? こちらでプログラムをコピーして変数名の小文字への修正をして試したところうまく削除されるようですが。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問