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

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

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

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

JavaScript

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

Q&A

0回答

233閲覧

Google gas 特定のフォルダに入っている特定のシートを集約したい。

退会済みユーザー

退会済みユーザー

総合スコア0

Google Apps Script

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

JavaScript

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

0グッド

0クリップ

投稿2018/08/30 04:30

特定のフォルダに入っているスプレッドシートの特定のシートから、(どちらも名前でひっぱる)
データを集約する仕組みを作っています。
おかげさまでうまく動くようになったのですが、現在の機能に、「特定のセルが空欄であればデータをコピーする、かつコピーが終わったら”済”という
文字を入れる」という動作を追加したいと思っているのですが、ifをどのあたりに入れればいいのかがわからず困っています。

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

エラーメッセージ

該当のソースコード

//データ集約用
function aggregateData1() {

var targetFolder = DriveApp.getFoldersByName('原稿集約').next();
var files = targetFolder.getFiles();

var outputSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('生データ_集約');
if (! outputSheet) {
var outputSheet = SpreadsheetApp.getActiveSpreadsheet().insertSheet('生データ_集約');
}
outputSheet.clear();

var curRow = 1;
var fileList = [];
while(files.hasNext()){
var file = files.next();

var spreadsheet = SpreadsheetApp.open(file); var sheet = spreadsheet.getSheetByName('集約用_原稿'); var id = sheet.getRange('A1').getValue(); fileList.push( { "fileName": file.getName(), "id": id } ); var srcRange = sheet.getDataRange(); outputSheet.getRange(curRow, 1, srcRange.getHeight(), srcRange.getWidth()) .setValues(srcRange.getValues()); var lastRow = outputSheet.getLastRow()+1; outputSheet.getRange(curRow, 1, lastRow-curRow, 1) .setValue(id); curRow = lastRow;

}

return fileList;

}

試したこと

下記で試してみたところ、エラーはでないものの空白の結果となりました。

var srcRange = sheet.getDataRange();
if(id[curRow][27]===''){
outputSheet.getRange(curRow, 1, srcRange.getHeight(), srcRange.getWidth())
.setValues(srcRange.getValues());

var lastRow = outputSheet.getLastRow()+1; outputSheet.getRange(curRow, 1, lastRow-curRow, 1) .setValue(id); curRow = lastRow; sheet.getRange(curRow+1,27).setValue('済');

}

return fileList;

}

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

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

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

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

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

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

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

papinianus

2018/08/30 05:27

id[curRow][27]はundefinedだと思うので、エラーが発生すると思います。コピー元の特定のセルが空白だったら、コピーし、コピー後にコピー元に済と書くのでしょうか?
退会済みユーザー

退会済みユーザー

2018/08/30 05:36 編集

はい!ご指摘のとおりです!→コピー元の特定のセルが空白だったら、コピーし、コピー後にコピー元に済と書きたいです
papinianus

2018/08/30 05:41

ぱらぱらと申し訳ないのですが、1つシート(1つのファイルの1つのシート)は1回しかコピーしないのでしょうか?それとも行単位でコピーを制御するのでしょうか?
退会済みユーザー

退会済みユーザー

2018/08/30 05:43

1回しかコピーしないです。こちらこそすみません、ありがたいです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問