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

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

新規登録して質問してみよう
ただいま回答率
85.31%
Google スプレッドシート

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

Google Apps Script

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

Q&A

1回答

217閲覧

GASでスプレッドシートAから配列を取得してBのシートの該当部分にチェックを入れたい

accra

総合スコア1

Google スプレッドシート

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

Google Apps Script

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

0グッド

2クリップ

投稿2023/06/16 02:55

実現したいこと

①スプレッドシートAのB列(行ごとに番号が振られている)を配列として取得する
②スプレッドシートB(A列に番号)のB列にA列の番号が①で取得した配列の中にあればチェックを入れたい(TRUEとFALSEで条件を分岐できれば良い)

説明

スプレッドシートBのコンテナ式のGASプロジェクトです
スプレッドシートAには番号(社員番号)が入力されています
シートBのA列の社員番号がAのシート(取得した配列)に見つかればシートBの番号の隣の列にチェック(目印なら何でも良い)を入力したい

皆様のお力貸していただければ幸いです、大変お手数ですが改善点や案についてアドバイス頂きたいのでよろしくお願いいたします。

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

LOGを確認して配列は取得できているしスプレッドシートに入力されている番号とも一致しているのだがTRUEが出ない

### 該当のソースコード GAS ソースコード function checkin() { const sheetA = SpreadsheetApp.openByUrl('https://docs........').getSheetByName('データフォーム'); const sheetB = SpreadsheetApp.getActiveSheet(); const values = sheetA.getRange(3,2,5000).getValues(); let value = values.flat(); let i = 1 let range = sheet.getRange(i,1).getValue(); for(let i=1 ;i <= 100; i++){ if(value.includes(range) == true ){ sheet.getRange(i,2).setValue("チェック(何でも良い)"); } else{ } } }

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

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

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

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

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

YellowGreen

2023/06/16 03:33

次のように修正してみると、どうなりますでしょうか? const sheetB = SpreadsheetApp.getActiveSheet(); ↓ const sheet = SpreadsheetApp.getActiveSheet(); let i = 1 let range = sheet.getRange(i,1).getValue(); for(let i=1 ;i <= 100; i++){ ↓ for(let i=1 ;i <= 100; i++){ let range = sheet.getRange(i,1).getValue();
guest

回答1

0

解決済みとなっていないので、回答します。

js

1function checkin() { 2 const sheetA = SpreadsheetApp.openByUrl('https://docs...').getSheetByName('データフォーム'); 3 const sheetB = SpreadsheetApp.getActiveSheet(); 4 //シートAの3行目から最終行(5000行ならコメントの方)までのB列の値を一次元配列(values)として取得 5 // const values = sheetA.getRange(3,2,5000).getValues().flat(); 6 const values = sheetA.getRange(3,2,sheetA.getLastRow() - 3 + 1).getValues().flat(); 7 //シートBの1行目から100行目までのA列の値を一次元配列(ranges)として取得 8 const ranges = sheetB.getRange(1, 1, 100).getValues().flat(); 9 //rangesの各要素(ranges[i])ごとに反復処理 10 for(let i = 0 ; i < 100; i++){//上の行の100とこの行の100は同じ数値とする 11 //rangesの各要素の値がvaluesの中にあるかどうか確認 12 if(values.includes(ranges[i])){//含まれるとき(「== true」は条件そのものなので書かない) 13 sheetB.getRange(i + 1, 2).setValue("チェック");// i がゼロ始まりなので 1 を足して行番号にする 14 } else {//含まれないとき 15 //何もしない 16 } 17 } 18}

投稿2023/08/20 02:55

codemaker

総合スコア89

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.31%

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

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

質問する

関連した質問