1

いくつかのパラメーター (グループ、データ ダンプの種類) を使用してユーザー リストを取得し、サービスとして機能するスクリプトを作成しました。

contentServiceを使用してデータを CSV として返します。

Chrome (Mac OS) または Firefox (Mac OS) では常にファイルを画面に表示する代わりに保存することを除いて、すべて正常に動作します... (ファイル名: echo.csv)

Safariを使用して、画面上にデータを取得します。

私の質問は、強制的な downloadAsFile()メソッドを使用せずにデフォルト名を変更できますか?

このスクリプトは、別のサーバーで開発した PHP アプリにコンテンツを提供するために使用されます。(私は開発のその部分にはあまり関与していません。Google Apps Script の部分を行っているだけです。:-)

スクリプトは次のとおりです。

function doGet(e) {
  if(e.parameter.log!='adminUser'){return ContentService.createTextOutput("erreur de logging, vous n'êtes pas autorisé à voir ce résultat, contactez Serge @ insas").setMimeType(ContentService.MimeType.TEXT)};
  var cat = e.parameter.cat;
  var type = e.parameter.type
  Logger.log(cat)
  var ssGroup = SpreadsheetApp.openById('0AnZ5_ShBzIxxxxxxxxx2MkZPNVViNXc');
  var ssUser = SpreadsheetApp.openById('0AnZ5_ShBzI6pdGxxxxxxxxxxxxxyNGoxRmc');
  var shU = ssUser.getSheetByName('Feuille de travail principale')
  var shG = ssGroup.getSheetByName('Horizontal')
  var datagroup = shG.getDataRange().getValues();
  var dataUser = shU.getDataRange().getValues();
  if(type==1){
    var outString = '';
    for(var n=0 ; n<dataUser.length ; ++n){
      if(dataUser[n][11].toString().indexOf(cat)==-1){ continue };
      var dataRow = dataUser[n][3]+','+dataUser[n][2]+','+dataUser[n][4]+','+dataUser[n][11]+';\n';
      outString+=dataRow
    }
    Logger.log('part1'+outString);
    var result = ContentService.createTextOutput(outString).setMimeType(ContentService.MimeType.CSV);
    return result;
  }else{
    var outString = '';  
    for(var n=0 ; n<datagroup.length ; ++n){
      if(datagroup[n][0].toString().indexOf(cat)==-1){ continue };
      var dataRow = datagroup[n][0];
      for(var c=2;c<datagroup[n].length;++c){
        if(datagroup[n][c]!=''){
          dataRow+=(','+datagroup[n][c])
        }else{
          dataRow+=';\n';
          break;
        }
      }
      outString+=dataRow
    }
    Logger.log('part2'+outString);
    var result = ContentService.createTextOutput(outString).setMimeType(ContentService.MimeType.CSV);
    return result;
  }
}
4

1 に答える 1

1

ブラウザーで CSV を表示したい場合は、正直に言う必要はありません。TEXT だとだけ言ってください。

function doGet(e) {
  // &type=TEXT to view as text
  var type = (e.parameter['type'] && e.parameter['type'] == "TEXT") ? "TEXT" : "CSV";

  var sheet = SpreadsheetApp.openById(sheetId).getSheets()[0];
  var data = sheet.getDataRange().getValues();
  var outString = '';
  for(var row=0 ; row<data.length ; ++row){
    outString += data[row].join(',') + ';\n';
  }
  Logger.log(outString);

  var result = ContentService
                   .createTextOutput(outString)
                   .setMimeType( ContentService.MimeType[type] );
  return result;
}
于 2014-01-16T21:29:47.607 に答える