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

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

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

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

Q&A

解決済

1回答

3636閲覧

GAS:Copytoにて TypeError: Cannot read properties of null が発生してしまう

pam

総合スコア1

Google Apps Script

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

0グッド

0クリップ

投稿2023/03/02 03:50

編集2023/03/02 03:51

前提

GASを用いて「同フォルダ内の指定文字列を含むファイルの指定シートをコピーする」スクリプトを制作しています。
最後の copyto の部分で「TypeError: Cannot read properties of null (reading 'copyTo')」のエラーが発生してしまいます。

「copysheet.copyTo(ss).setName("コピーデータ");」の部分を消した時は正常に実行できるため、copytoがよろしくないことは分かりましたが、代わりにどういった処理を書いたらいいのかが分かりません。
まだGASを触り始めて日が浅いのでご教授いただけますと幸いです。よろしくお願いいたします。

該当のソースコード

javascript

1function Copytest(){ 2 3 // 自身のスプレッドシートのIDを取得 4 var ss = SpreadsheetApp.getActiveSpreadsheet(); 5 var ssId = ss.getId(); 6 7 // 親フォルダ(ファイル自身が格納されているフォルダ)を取得 8 var parentFolder = DriveApp.getFileById(ssId).getParents(); 9 // 親フォルダIDを取得 10 var folderId = parentFolder.next().getId(); 11 // 親フォルダ内のファイルを一括取得 12 const files = DriveApp.getFolderById(folderId).getFiles(); 13 14 // ファイルを一つずつ鑑定 15 while (files.hasNext()) { 16 17 const file = files.next(); 18 const filename = file.getName(); 19 const fileid = file.getId(); 20 21 // 検索対象の文字列 22 let str = filename; 23 // 条件 24 let reg = /_/; 25 // 結果 26 let result = reg.test(str); 27 28 if (result = true) { //条件に合致するファイル名のみ 29 30 // コピー元を指定 31 var source = SpreadsheetApp.openById(fileid); 32 // コピーするシートを指定 33 var copysheet = source.getSheetByName("コピーデータ"); 34 // コピーする 35 copysheet.copyTo(ss).setName("コピーデータ"); 36 } 37 38 } 39 40}

エラーメッセージ

TypeError: Cannot read properties of null (reading 'copyTo')

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

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

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

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

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

guest

回答1

0

ベストアンサー

js

1 var copysheet = source.getSheetByName("コピーデータ"); 2 // コピーする 3 copysheet.copyTo(ss).setName("コピーデータ");

copysheetnull になっているというエラーですから、getSheetByName() の引数が間違っている可能性が高いです。

投稿2023/03/02 04:00

int32_t

総合スコア20832

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

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

pam

2023/03/02 13:12

int32_t様 コメントありがとうございます。遅くなり申し訳ありません。 if文の内部を以下のように書き直したところ無事意図した起動が出来ました! 誠にありがとうございます。 (↓をwhile文の前に追加) // 検索するシート名 var sheetName = "移行データ"; ---------------------- // シートを取得 var sheetToCopy = SpreadsheetApp.openById(file.getId()).getSheetByName(sheetName); // シートをコピー sheetToCopy.copyTo(ss).setName(sheetName);
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問