kintone에서 spreadsheet으로 정보 전기 (간이 버전)

소개



금과 소리 는 누가 기입, 갱신했는지를 알기 때문에 편리합니다만, 단독으로는 집계나 그 외의 시스템과의 자동화에 약한 것이 난점입니다.
수식을 사용해 집계를 실시하고 싶고, kintone→spreadsheet에 정보를 전기하는 것을 만들었습니다.

이하의 기사를 바탕으로 하고 있습니다(이하 기사중의 라이브러리의 인스톨이 있을지도).
htps : // 이 m/아라하비카/있어 ms/063877b0이다 439020d2c2
htps : // 코 m / 스탤 / ms / 0d d3 예 4f 세 83 아 21

초기 설정



spreadsheet 복사



아래 링크의 spreadsheet을 복사하여 사용하십시오.
htps : // / cs. 오, ぇ. 이 m/sp레 d 〇에 ts/d/18 울 lm 2L×x7 우 sp = 샤린 g

kintone 앱 정보 설정



'마스터'라는 시트에 정보를 입력하세요.

1. 「앱 ID」라는 열에 kintone으로 앱을 만들면 URL이 「~.cybozu.com/k/◯◯/」가 되어 있습니다만, 이 ◯◯의 숫자를 넣어 주세요.
2. 앱 이름 열에 kintone 앱의 이름을 넣으십시오.

※어플리케이션 번호는, 어플리케이션 ID에 기입이 있으면 자동으로 설정되게 되어 있습니다.

사용자 정보 입력


  • spreadsheet 스크립트 편집기를 엽니 다.
  • 파일에서 프로젝트 속성을 엽니 다.

  • 다음 정보를 설정합니다.
  • subdomain - 사이보즈 URL의 하위 도메인 (https://◯◯.cybozu.com/의 ◯◯ 부분)
  • user - 로그인 할 때의 사용자 이름
  • pass - 로그인 할 때 암호



  • ※유저명, 패스워드에 사용하는 계정은 관리자 권한이 필요할지도

    각 취득 조건(쿼리) 설정



    조작 시트에 다음 정보를 입력합니다.
  • 실행 열
  • 여기가 true 인 행이 실행됩니다

  • "앱 번호"열
  • kintone의 앱 ID를 설정하십시오

  • 쿼리 열

  • 여기을 참조하여 설정하십시오 (입력되지 않은 경우에도 실행 가능).
  • 초기 상태에서는 최대 100개까지 제한됩니다. 쿼리에 'limit 500'을 추가하면 최대 500개까지 검색할 수 있습니다.

  • 출력 시트 이름 열
  • 출력할 spreadsheet 시트 이름을 입력하십시오.


  • 실행



    "개요"시트의 고양이 이미지를 누르면 처리가 시작됩니다.

    출처




    main.js
    var manager = '';
    var apps = {};
    
    // メイン処理
    function main() {
    
      prepare();
      control();
    
    }
    
    
    // 初期化
    function prepare() {
    
      // 各種設定
      var subdomain = PropertiesService.getScriptProperties().getProperty("subdomain");
      var user      = PropertiesService.getScriptProperties().getProperty("user");
      var pass      = PropertiesService.getScriptProperties().getProperty("pass");
    
      // アプリ情報の設定
      var sheet     = SpreadsheetApp.getActive().getSheetByName('マスタ');
      var data      = sheet.getDataRange().getValues();
      var appName   = '';
    
      // 2行目から検索
      for (var i = 1; i < data.length; i++) {
    
        // 1列目が空ではないとき
        appName = data[i][0];
        if('' !== appName){
          apps[appName] = {};
          apps[appName]['appid'] = data[i][1];
          apps[appName]['name']  = data[i][2];
        }
      }
      Logger.log(apps);
    
      // パスワード認証
      manager = new KintoneManager.KintoneManager(subdomain, apps, user, pass);
    }
    
    // 検索
    function control() {
    
      // 操作シートの情報を取得
      var sheet      = SpreadsheetApp.getActive().getSheetByName('操作');
      var data       = sheet.getDataRange().getValues();
      var utillList  = '';
      var query      = '';
      var records    = '';
      var sheetWrite = '';
      var appName    = '';
    
      // 2行目から検索
      for (var i = 1; i < data.length; i++) {
    
        // 1列目がtrueの場合
        utillList = data[i];
        if (utillList[0]) {
    
          // kintoneの対象アプリ名を取得
          appName = searchApp(utillList[1]);
    
          // クエリを取得
          query = utillList[2];
    
          // 検索処理
          records = search(appName, query);
    
          // 書き込みシートを取得
          sheetWrite = SpreadsheetApp.getActive().getSheetByName(utillList[3]);
          writeSheet(sheetWrite, records);
        }
      }
    }
    
    
    
    // 検索処理
    function search(appName, query){
    
      // 検索を実行
      var response = manager.search(appName, query);
    
      // 結果コード
      Logger.log('ステータスコード:' + response.getResponseCode());
    
      // レコードの配列を返却
      return JSON.parse(response.getContentText()).records;
    }
    
    // シートに書き込み
    function writeSheet(sheet, records){
    
    
      // 列見出しを取得
      var array_kintone_fields = sheet.getRange("1:1").getValues()[0];
      array_kintone_fields = array_kintone_fields.filter(Boolean);
    
      // 書き込み行
      var row = 2;
    
      // 100行の内容を削除
      sheet.getRange(row, 1, 100, array_kintone_fields.length).clearContent();
    
      // レコードが取得された場合
      if(typeof records !== 'undefined'){
    
        // 値設定
        records.forEach(function(record){
          array_kintone_fields.forEach(function(kintone_field,index){
            sheet.getRange(row,index+1).setValue(record[kintone_field].value);
          })
           row++;
        })
    
      // レコードが取得されなかった場合
      }else{
        sheet.getRange(row,1).setValue('あれ?取得できませんでした…');
      }
    
    
    
    }
    
    // アプリケーション名を検索
    function searchApp(appId){
    
      // 対象アプリを検索
      for (var key in apps) {
    
        // アプリIDが一致した場合
        if(apps[key].appid === parseInt(appId, 10)){
    
          // アプリ名を返却
          Logger.log('アプリ→' + key);
          return key;
        }
      }
    
      // 見つからなかった場合
      Logger.log('アプリが見つかりませんでした');
      return "";
    }
    
    

    사이고에게



    표 옆에 집계 수식을 설정하고 싶지만, 지금은 「spreadsheet의 모든 정보를 취해 와, 표제에 맞는 kintone 정보를 설정」으로 하고 있기 때문에, 수식의 열이 있다고 버그해 버린다.
    언젠가 어떻게든 하고 싶다…

    좋은 웹페이지 즐겨찾기