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

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

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

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Google

Googleは、アメリカ合衆国に位置する、インターネット関連のサービスや製品を提供している企業です。検索エンジンからアプリケーションの提供まで、多岐にわたるサービスを提供しています。

Q&A

1回答

2519閲覧

GAS を使って別ファイルからデータの抽出

sterengers

総合スコア5

Google Apps Script

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Google

Googleは、アメリカ合衆国に位置する、インターネット関連のサービスや製品を提供している企業です。検索エンジンからアプリケーションの提供まで、多岐にわたるサービスを提供しています。

0グッド

1クリップ

投稿2021/12/14 07:01

前提・実現したいこと

GAS(google apps script)で
アクティブなファイル(Aと名前をつける)のセルA1に書いてある文字を別ファイルのファイル名と照らし合わせて合っていたら
そこのファイルの6列E行から下にデータがあるまで(LastRow)探査して、ファイルAの2列B行から縦に出力していくプログラムが作りたいです。

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

Exception: Invalid argument: q

該当のソースコード

 //指定, 取得 function myFunction(){ var sheet = SpreadsheetApp.getActiveSheet(); var stringValue = sheet.getRange('A1').getValue(); Logger.log(stringValue); findFolderId(stringValue); } //ID指定でフォルダを取得するプログラム function findFolderId() { var id = ""; //フォルダID var folder = DriveApp.getFolderById(id); console.log(folder.getName()); var params = stringValue; var searchedFolders = DriveApp.searchFolders(params); while (searchedFolders.hasNext()) { var folder = searchedFolders.next(); var folderName = folder.getName(); console.log(folderName); } }

試したこと

コンソールでstringValueに入ってる文字を表示したのですが、中身はちゃんと入っていて
ファイル名と一致しているのですが、無効な引数と出るのでよくわかりません。
調べ方が絶対に悪いとは思うのですが、手こずってしまいてんてこまいになってしまい、解決をお願いしました。

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

Macで動かしています。
あまり調べ方がうまくなく情報がいまいち探れません。
もしファイル名の一致など先のプログラムがわかるのならどうかご教授お願いします。

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

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

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

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

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

T_mari

2021/12/14 09:20

ぱっと見ですが、ユーザー定義関数のfindFolderId()にstringValueの値が渡せていないのでは?と思いました。 myfunction()内のvar stringValueのスコープの問題であると仮定すると、 findFolderId(stringValue)としてあげれば解決するかと思います。 (そうするとvar paramsも必要なくなりそうですが)
sterengers

2021/12/14 12:14

試してみたのですが、違いました、、、 違うフォルダで試してみたのですが、同じエラーが出てしまいます。 var params 要らなかったですね、ありがとうございます消しました。
guest

回答1

0

質問の追記にすでにありましたね。取り下げます。

確認ですが、アクティブなファイルのA1に書かれているのはファイルのE6から下のデータをアクティブなシートのB2から下に転記したいということですね。
転記する部分のロジックは今後なのでしょうか。
今は取得したファイル名がうまく処理できないということのようですが、そうすると使うべき関数はsearchFilesの方が適しているのではないでしょうか。

function findFolderId(stringValue) { var id = ""; //フォルダID var folder = DriveApp.getFolderById(id); console.log(folder.getName()); var params = ["title='"+stringValue+"'"]; var searchedFiles = DriveApp.searchFiles(params); while (searchedFiles.hasNext()) { var file = searchedFiles.next(); var fileName = file.getName(); console.log(fileName); } }

searchFoldersもそのようですが、検索条件として渡すstringValueはそのままではダメで、所定の書式に則って書く必要があります。詳しくは以下のページにあります。(英語ですけど)
Search query terms and operators

投稿2021/12/15 01:17

編集2021/12/15 02:17
com.woody

総合スコア43

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

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

sterengers

2021/12/15 01:24

//指定する日付の取得 function myFunction(){ var sheet = SpreadsheetApp.getActiveSheet(); var stringValue = sheet.getRange('A1').getValue(); Logger.log(stringValue); findFolderId(stringValue); } //ID指定でフォルダを取得するプログラム function findFolderId(stringValue) { var id = "b"; //フォルダID var folder = DriveApp.getFolderById(id); console.log(folder.getName()); // var params = "テスト"; var searchedFolders = DriveApp.searchFolders(stringValue); while (searchedFolders.hasNext()) { var folder = searchedFolders.next(); var folderName = folder.getName(); console.log(folderName); } } 現在こんな感じで指摘された内容と同じようにしてあるのですが、エラーが出っ放しなのです、、、
sterengers

2021/12/15 01:42

//ボタン操作 function buttonClick() { let msg = Browser.msgBox('確認メッセージ','実行します。よろしいですか?',Browser.Buttons.OK_CANCEL); if (msg == 'ok') { Browser.msgBox('OKが押されました。'); } else{ Browser.msgBox('キャンセルが押されました。'); } myFunction();//シート名の取得 } 他のファイルでボタンの動きをチェックするコード書いてあります、これを消してもエラーが出るので放置してあります。 後は触っていないです、、、、すいません下手くそなコードを書いてしまって
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問