

以下に示すプログラムでメールアドレスと一致するセルの右隣のセルのデータを取得し、以下のtextに代入したいです。

[code]

     var payload = {
       "text" : text
       }
    
[/code]

これまで試したこと:

  * admindirectory(管理者権限なし)
  * ネット上でサンプルコードを貼って試す

なにせ初学者で、JavaScriptもしていないので全然わかりません。(自分の専門はPythonです)  
拙い文章で分かりづらいところがあると思いますがよろしくおねがいします。

**現状のプログラム:**

[code]

    /// ドキュメントにアクセスした人のログをとってchatに送信する
    function readsent() {
    /// ドキュメントにアクセスした人のログを取得する
      var url = 'https://chat.googleapis.com/*****************************************************';
     var text = Session.getActiveUser().getEmail();
     var payload = {
       "text" : text
       }
     var json = JSON.stringify(payload);
     var options = {
       "method" : "POST",
       "contentType" : 'application/json; charset=utf-8',
       "payload" : json
     }
    
     ///　Spreadsheetから名簿とメールアドレスを紐づける
     var response = UrlFetchApp.fetch(url, options);
     Logger.log(response);
      var sheetId = "************************************";
      var sheet = SpreadsheetApp.openById(sheetId);
      var range = sheet.getDataRange();
      var values = range.getValues();
    
      var map = {}
      for (var i = 1; i < values.length; i++) {
        map[values[i][1]] = values[i][0];
        Logger.log(map)
      }
      return map;
    }  
    
[/code]


CC BY-SA 4.0
2022-12-02T04:07:35.287
92534
2022-12-04T02:33:10.537
2022-12-02T05:36:56.790
3060
question
google-apps-script google-spreadsheet
GASでアクセスした人のメールアドレスを取得して、それに一致するセルをSpreadsheetから取得し、メールアドレスを名前に置き換えてchatに送信したい


以下のコードでtextに関連情報が代入されます。(ただし複数の名前が登録されていた場合一番目のものになります。)

[code]

    function info_search() {
      var search = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().createTextFinder(Session.getActiveUser().getEmail()).findAll();//リスト形式です
      var text = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().getRange('B' + search[0].getA1Notation().substring(1)).getValue();
    }
    
[/code]

もし仮に情報がいくつかある場合は以下をおすすめします。(リスト形式で代入されます)

[code]

    function info_search() {
      let test =[]
      var result = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().createTextFinder(Session.getActiveUser().getEmail()).findAll();
      for(var i of result){
        test.push(SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().getRange('B' + i.getA1Notation().substring(1)).getValue());
      }
    }
    
[/code]

以下解説です(といってもざっとですが)

[code]

    .getActiveSpreadsheet()//現在有効なスプレッドシートを取得
    .getActiveSheet()//現在有効なシートを取得
    .createTextFinder(Session.getActiveUser().getEmail()/*メールアドレス取得*/)//検索したい内容を指定(フィルタみたいな感じです)
    .findAll()//検索
    
    .getRange('B' + i.getA1Notation().substring(1)/*A列にメールアドレス、B列に情報が入ってると仮定して"i.getA1Notation()"でセルを取得、".substring(1)"で「A??」の形を「??」に変形させ"B+..."で「B??」の形にします。実際のシートに合わせて適宜変更してください。*/)/*セルを指定*/
    .getValue()//セルの中身を取得
    
[/code]

参考URL  
[Google Apps
Scriptで行うスプレッドシートの検索方法](https://www.acrovision.jp/service/gas/?p=606)


CC BY-SA 4.0
2022-12-03T01:22:44.307
92548
2022-12-04T02:33:10.537
2022-12-04T02:33:10.537
54864
54864
92534
answer