95638


会社名を「（東京都）元ダミーデータ」A1:A5列までをコピーしたいです。  
のちに他の機能と連携させたいので、「データ整理」ファイルで「会社名入力」関数を実行させたいのですが、実行されません。  
COMPANY関数はほぼ想定通りに動いています。  
DATA関数の中でCOMPANY関数を動かすためには、どうすればよいですか？

[![会社名元データ](https://i.stack.imgur.com/bhoa6.png)](https://i.stack.imgur.com/bhoa6.png)

[![こんな風にコピー＆ペーストしたい](https://i.stack.imgur.com/8ykGD.png)](https://i.stack.imgur.com/8ykGD.png)

[code]

    function  Data() {
      var spreadsheet = SpreadsheetApp.getActive();
      //スプレッドシートをGASで使う宣言
    COMPANY
    
    
      spreadsheet.setActiveSheet(spreadsheet.getSheetByName('現在実行した結果出力されるシート'), true);
    
    }
    
[/code]

したが、単体でなら実行できる関数です。

[code]

    function COMPANY() {
      var spreadsheet = SpreadsheetApp.getActive();
      //スプレッドシートをGASで使う宣言
      for (i=1; i<=10; i++) {
      let  v = i+11;
      spreadsheet.setActiveSheet(spreadsheet.getSheetByName('現在実行した結果出力されるシート'), true);
      spreadsheet.getRange('A' + i).activate();
      spreadsheet.getRange('\'（東京都）元ダミーデータ\'!A' + i).copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
    
      spreadsheet.setActiveSheet(spreadsheet.getSheetByName('現在実行した結果出力されるシート'), true);
      spreadsheet.getRange('B' + v).activate();
      spreadsheet.getRange('\'（東京都）元ダミーデータ\'!A' + i).copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
      
      //会社名をB1:B10と、B12:B22まで出力
       } 
       }
    
[/code]


CC BY-SA 4.0
2023-07-14T01:57:45.750
95601
2023-07-15T11:07:34.053
2023-07-14T02:10:08.603
3060
58928
question
google-apps-script google-spreadsheet
単純なコピー＆ペーストがうまく実行されない


Google Apps Scriptにおける、「関数」の扱い方を最低限のレベルでも知る必要があります。

関数には「定義」と「実行」の2フェーズ必要ですが、それぞれ「どのように記述する必要があるのか」が決められています。

## 関数の「定義」

大雑把に書くと下記のような文法で記述することが出来ます。

  * `function funcName(/* 仮引数 */) { /* 処理 */ }`
  * `const funcName = (/* 仮引数 */) => { /* 処理 */ }`

今回で言えば、`function COMPANY ～`として関数の定義そのものは正しく行えています。  
（※当たり前ですが、そうでなければGASの画面上で実行すら出来ません）

## 関数の「実行」

GASにおける関数の実行は、`funcName(/* 実引数 */)`の書式が必要です。  
仮に引数を必要としなくとも、最低限`()`がなければ「関数の実行」とはみなされません。

## 元のソースについての言及

[code]

    function  Data() {
      var spreadsheet = SpreadsheetApp.getActive();
      //スプレッドシートをGASで使う宣言
    COMPANY
    
    
      spreadsheet.setActiveSheet(spreadsheet.getSheetByName('現在実行した結果出力されるシート'), true);
    
    }
    
[/code]

`DATA()`の処理の過程で、「関数の実行」を意図しようとした`COMPANY`という行がありますが、これは「関数そのものを参照」しているだけであり、
**「関数の実行」を意味していません。**  
関数の実行を意味していない以上、`COMPNAY`関数内に記述されている処理は当然ながら実行されません。

## どうする必要があるのか

ここまで出ている通り、`COMPANY`の記述をしているタイミングで関数の実行をしたいのであれば、下記のようにする必要があります。

[code]

    function  Data() {
      var spreadsheet = SpreadsheetApp.getActive();
      //スプレッドシートをGASで使う宣言
      COMPANY();
    
      spreadsheet.setActiveSheet(spreadsheet.getSheetByName('現在実行した結果出力されるシート'), true);
    
    }
    
[/code]


CC BY-SA 4.0
2023-07-15T11:07:34.053
95638
2023-07-15T11:07:34.053
2784
95601
answer