80958


**やりたいこと**  
GASを使用してGSSのセルからdiscordにメッセージを送りたいと思っております。  
たくさんのdiscordのチャンネルに文章を送りたいと考えているため、  
同じ形のコードを作り、違うところだけ変数にしてデータを送りたいと考えています。  
しかし、おくりたい文章のひな形が変わる恐れがあり、もし変わるとなるとコードを一つ一つ変える必要性があります。

例えば以下の様な形になるのですが、このmessageの文章が変わる可能性があるということです。

[code]

    var agecoord = sheet.getRange(2,6); 
    var age = agecoord.getValue();
     
    var message = "私は" + age + "になります。";
    
[/code]

ですので、スプレットシートにこの文章を書き込み、取り出して出力したいのですが、  
この場合、ageの変数扱いされないので困っています。

取り出したい文章を `"私は" + age + "になります。"` にした場合、  
どのようにすれば変数ageをあてはめることができるでしょうか？

**実際書いてみたコード**

[code]

    function submit(){
      discord(get_value())
    };
    
    function get_value() {
      var sheet = get_sheet('スプレットシートURL',0);
      //配信時間
      var a = sheet.getRange(2,6); 
      var atime = a.getValue();
      //format
      var formatcoord = sheet.getRange(99, 3);
      var format = formatcoord.getValue();
      
      return format;
    };
    
    function get_sheet(gss_url,sheet_num) {
      var ss = SpreadsheetApp.openByUrl(gss_url);
      var sheet = ss.getSheets()[sheet_num];
      return sheet;
    };
    
    function discord(message) {
        const url        = 'discord webhookURL';
        const token      = 'discord token';
        const channel    = '#channel';
        const text       = message;
        const username   = '  discord1';
        const parse      = 'full';
        const method     = 'post';
    
        const payload = {
            'token'      : token,
            'channel'    : channel,
            "content"    : text,
            'username'   : username,
            'parse'      : parse,
        };
    
        const params = {
            'method' : method,
            'payload' : payload,
            'muteHttpExceptions': true
    
        };
    
       response = UrlFetchApp.fetch(url, params);
    }
    
[/code]


CC BY-SA 4.0
2021-08-21T13:50:08.037
80957
2021-08-22T05:39:01.377
2021-08-22T05:39:01.377
3060
47546
question
google-apps-script
GASでセルの文章に変数をあてはめたい


ちょっと質問が理解しにくいのですが、こういうことでしょうか。

[code]

    const age = "30"; // 実際にはシートから値を取得
    const format = '"私は" + age + "になります"'; // 実際にはシートから値を取得
    
    const message = eval(format);
    console.log(message); // 私は30になります
    
[/code]

ただ、`eval()`は危険なので使うべきでない。

[eval() - JavaScript |
MDN](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/eval#never_use_eval!)

そこで`Function()`を使うなら

[code]

    const message = Function('const age = ' + age + '; return ' + format + ';')();
    
[/code]

でしょうか。


CC BY-SA 4.0
2021-08-21T15:43:06.097
80958
2021-08-21T15:43:06.097
45045
80957
answer